Ruby-数组

=begin
      数组,是有序的,基于整数引索的任意对象的集合;索引起始为0  -1为最后一个元素
=end

#数组的用法----如何获取数组中的元素
arr = [1, 2, 3, 4, 5, 6]
arr[2]            #输出第三个数组中的元素:3
arr[100]          #无法输出超出数组长度的元素:nil
arr[-3]           #输出倒数组中数倒数第三的元素:4
arr[2,3]          #输出从第三个元素开始三个长度的元素:[3,4,5]
arr[1 .. 4]       #输出包括第二个元素到第五个之间的所有元素:[2,3,4,5]
arr[1 .. -3]      #输出包括正数第二个元素到到倒数第三个元素之间的所有元素:[2,3,4]
arr.at(0)         #输出数组中第一个元素:1
arr.fetch(1)      #输出数组中第二个元素:2
arr.take(3)       #输出数组中前三个元素:[1,2,3]
arr.drop(3)       #丢弃数组中前三个元素后剩下的元素,不会修改数组本身:[4,5,6]

#数组的用法----获取数组的信息
arr.length        #输出数组中元素的长度(个数):6
arr.count         #输出数组中元素的个数(长度):6
arr.empty?        #判断数组是否为空:false
arr.include?(6)   #判断该对象是否为数组中的元素:true

#修改数组----向数组中增加元素
arr = [1, 2, 3, 4]
arr.push(5)                       #向数组末尾插入一个元素:[1,2,3,4,5]
arr << 6                          #同上,向数组末尾插入一个元素:[1,2,3,4,5,6]
arr.unshift(0)                    #在数组的起始位置插入一个元素:[0,1,2,3,4,5,6]
arr.insert(3, "heiheihei")        #在数组第三个元素后面插入一个元素,使之成为第四个元素,新元素索引位置为3:[0,1,2,"heiheihei",3,4,5,6]
arr[8] = 7                        #在索引位置为8的位置插入(修改)一个元素:[0,1,2,"heiheihei",3,4,5,6,7]

#修改数组----删减数组中的元素
arr = [1, 2, 3, 4, 5, 6]
arr.pop           #删除数组的最后一个元素:[1,2,3,4,5]
arr.shift         #删除数组中的第一个元素:[2,3,4,5]
arr.delete_at(2)  #删除数组中索引位置为2的元素,:[2,3,5]
arr.delete(2)     #删除数组中的元素2:[3,5]

arr = [1, 1, 2, 2, 3, 3, nil]
arr.uniq          #删除数组中重复的元素并输出,不会修改数组本身:[1,2,3,nil]
arr.compact       #删除数组中显示出的nil元素并输出,不会修改数组本身:[1,1,2,2,3,3]

#数组的用法----遍历数组
arr = [1, 2, 3, 4, 5, 6]
arr.each{ |x| puts x }                #按顺序遍历数组中的元素(方法一): 1\n2\n3\n4\n5\n6\n
arr.each do |x|
  puts x
end                                   #按顺序遍历数组中的元素(方法二):1\n2\n3\n4\n5\n6\n
arr.reverse_each { |x| puts x }       #逆序遍历数组中的元素:6\n5\n4\n3\n2\n1\n
arr.map { |x| x * 2 }                 #接受一个块,对特定的元素进行单独的操作,需要赋值给一个新的变量,不会修改数组本身:[2,4,6,8,10,12]
arr.select { |x| x > 4 }              #在数组中筛选出值大于4的的元素,需要赋值给一个新的变量,不会修改数组本身:[5,6]
arr.reject { |x| x > 4}               #在数组中筛掉值大于4的元素,需要赋值给一个新的变量,不会修改数组本身:[1,2,3,4]

arr = [1, 2, 3, 4, 3, 2, 1]
arr.drop_while { |x| x < 3 }          #删除最先一次数组中满足条件的的元素,不会修改数组本身:[3,4,3,2,1]
arr.delete_if { |x| x < 3 }           #删除数组中所有满足条件的元素:[3,4,3]

arr = [1, 2, 3, 4, 3, 2, 1]
arr.keep_if { |x| x > 3}              #只输出满足条件的元素:[4]

本文题目:Ruby-数组
文章出自:http://myzitong.com/article/pjgico.html