取值
索引取值
arr = [1, 2, 3, 4, 5]
arr[0] = 1
arr.at(0) = 1
take & drop
arr.take 3 #=>[1, 2, 3]
arr.drop 3 #=>[4, 5]
插值
pop, push && shift , unshift
arr = [1, 2, 3, 4]
arr.push(5) #=> [1, 2, 3, 4, 5]
arr << 6 #=> [1, 2, 3, 4, 5, 6]
arr.pop #=> 6
arr #=> [1, 2, 3, 4, 5]
arr.unshift 0 #=>[0, 1, 2, 3, 4, 5]
arr.shift #=> 0
arr #=>[1, 2, 3, 4, 5]
arr.push [1, 2, 3] #=>[1, 2, 3, 4, 5, [1, 2, 3] ]
insert
arr = [1, 2, 3, 4]
arr.insert(3 , 5) #=>[1, 2, 3, 5, 4] #第一个参是索引值
删除
delete
arr = [1, 2, 2, 3, 4]
arr.delete 2 #=>2
arr #=>[1, 3, 4] #delete根据实际值删除全部
arr.delete_at 2 #=>4
arr #=>[1, 3] #delete_at根据索引值删除
compact(去nil)
arr = [1, nil, 2 , nil, 3 , 4]
arr.compact #=>[1, 2, 3, 4]
arr #=>[1, nil, 2 , nil, 3 , 4]
arr.compact! #=>[1, 2, 3, 4]
arr #=>[1, 2, 3, 4]
#compact: v, adj 紧凑的,使紧凑
uniq(去重)
arr = [2, 5, 6, 556, 6, 6, 8, 9, 0, 123, 556]
arr.uniq #=> [2, 5, 6, 556, 8, 9, 0, 123]
arr.uniq!
迭代
each
arr = [1, 2, 3, 4]
arr.each {|a| puts a+1} 执行结果:1234 #=>[1, 2, 3, 4] #返回原数组
map&map!
arr.map {|a| a+1} #=>[2, 3, 4, 5] # 返回block处理过后的结果
arr.map! {|a| a+1} #=>[2, 3, 4, 5] # 返回block处理过后的结果,并改变原数组
选择
不改变原数组
arr = [1, 2, 3, 4, 5, 6]
arr.select { |a| a > 3 } #=> [4, 5, 6]
arr.reject { |a| a < 3 } #=> [3, 4, 5, 6] #可以理解为!select
arr.drop_while { |a| a < 4 } #=> [4, 5, 6]
arr #=> [1, 2, 3, 4, 5, 6]
修改原数组
arr = [1, 2, 3, 4, 5, 6]
arr.delete_if { |a| a < 4 } #=> [4, 5, 6]
arr #=> [4, 5, 6]
arr = [1, 2, 3, 4, 5, 6]
arr.keep_if { |a| a < 4 } #=> [1, 2, 3]
arr #=> [1, 2, 3]
连接
判断
存在性
arr = [1, 2, 3, 4, 5, 6]
arr.include? 1 #=>true
为空?
arr.empty? #=>false
相等
a=[1, 2]
b=[1, 2]
a.eql? b #=>true
a.equal? b #=>false equal?只有当二者是同一个对象的时候才会为true