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