ruby中操作数组的方法

插入元素的方法

  • ary1.concat(ary2)          # 将ary2的所有元素作为ary1的新元素插入到最后面,返回ary1,具有破坏性,作用的对象只能同时为数组或同时为字符串,与Js中的concat()差别较大
  • ary.unshift(x)            # 将x作为新元素插入到数组最前面
  • ary.push(x)                      # 将x作为新元素插入到数组最后面
  • ary << x                             # 同上

删除元素的方法

  • compact                        除去数组中为nil的元素,不具破坏性
  • compact!                         # 除去数组中为nil的元素,将原数组破坏后返回(若元数组没有为nil的元素,则返回nil)
  • ary.delete(x)                 # 删除值为x的所有元素
  • ary.delete_at(n)           # 删除下表为n的元素
  • ary.delete_if { |a| a > 3 } 对数组中的每个元素a进行测试,如果区块的执行结果为真,则从数组中将个元素删除,具有破坏性
  • ary.reject! { |a| a > 3 }  同delete_if
  • ary.reject { |a| a > 3 }   # 不具破坏性
  • ary.slice!(n)                 # 删除指定下标的元素,不加“!”则不具有破坏性
  • ary.slice!(n..m)            # 删除指定范围的元素,不加“!”则不具有破坏性
  • ary.slice!(n, len)            # 同上
  • ary.uniq                      # 删除数组中重复的元素,返回新数组
  • ary.uniq!                       # 删除数组中重复的元素,如果元数组中不存在重复的元素,则返回nil;如果存在,则破坏元数组并将其返回
  • ary.shift                        # 删除数组中的第一个元素,并返回该元素,具有破坏性
  • ary.pop                      # 删除数组中的最后一个元素,并返回该元素,具有破坏性

替换元素的方法

  • ary.collect! { |a| ... }  # 通过遍历每个元素,对每个元素进行操作后将其返回,得到改变后的数组,以下类同
  • ary.map! { |a| ... }     # map与collect方法在对数组的操作上是完全一样,对枚举类型的操作才有不同
  • ary.fill(value)            # 指定范围,将其元素替换成value,以下类同
  • ary.fill(value, begin)
  • ary.fill(value, begin, len)
  • ary.fill(value, n..m)
  • ary.flatten!  # 将数组扁平化,是数组中的每个元素都不为数组,如:ary = [[1, 2, 3], [2, 3, 4, 5, [7, 8]]], ary.flatten! => [1, 2, 3, 2, 3, 4, 5, 7, 8]
  • ary.reverse!    # 将数组的元素进行倒序排列
  • ary.sort!          # 没有块时,使用<=>操作符进行比较
  • ary.sort! { |i, j| ... }
  • ary.sort_by { |a| ... }

其他

  • ary.include?(arg) #判断数组ary是否包含元素arg
原文地址:https://www.cnblogs.com/jing5022/p/3175785.html