携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第22天,点击查看活动详情
三、数组的常用操作方法
数组也是具有可枚举能力的类型,因此它也具有所有 Enumerable 模块的方法。
a = [1, 2, 3, 4, 5]
puts (a.find_all{|i| i > 2}).to_s
puts a.max
puts a.include?(6)
puts a.inject{|sum, i| sum += i }
执行上述的代码,输出结果如下:
[3, 4, 5]
5
false
15
除此之外,数据还有其他方法,如:
array.size/array.length:获取数组的长度或者包含元素的个数array.concat(other_array):将另一个数组中的元素添加到 array 中array.clear:清空数组array.delete(obj):删除数组中的指定元素array.delete_at(index):删除指定索引位置的元素array.delete_if{|i| block}:删除指定条件既使 block 代码块返回 true 的元素array.first/array.last:获取数组的第一个和最后一个元素array.compact:返回一个数组的副本,并删除其中的 nil 元素array.flattern:如果数组中包含的元素为数组,将不断递归合并,直到数组中包含基本类型的元素位置array.index(obj):返回数组中指定元素的索引array.insert(index, obj):在指定位置插入元素array.join(sep):根据指定分隔符,将数组中的所有元素合并为一个字符串。array.pop\array.shift:删除数组中的最后一个元素/第一个元素array.push(obj):将元素添加到数组尾部array.replace(other_array):使用其他数组替换 array 中的内容array.reverse:返回一个反序的数组。
a = ["tony", "steven", "peter"]
puts a.size
puts a.length
b = ["hulk", "thor"]
puts (a.concat(b)).to_s
puts (a.clear).to_s
c = ["tony", "steven", "peter"]
puts (c.delete("tony")).to_s
puts c.to_s
puts (c.delete_at(1)).to_s
puts c.to_s
d = ["tony", "steven", "peter"]
puts (d.delete_if { |item| item.start_with?("s")}).to_s
puts d.to_s
puts d.first
puts d.last
执行上述代码,输出结果如下:
3
3
["tony", "steven", "peter", "hulk", "thor"]
[]
tony
["steven", "peter"]
peter
["steven"]
["tony", "peter"]
["tony", "peter"]
tony
peter
delete 和 delete_at 方法会返回删除的元素,而 delete_if 会返回删除符合 block 代码元素之后的数组。
a = [1, 2, nil, "a"]
puts (a.compact).to_s # 返回一个新的数组
b = [a, 1, [3, 4], [["thor", "loki"], "tony"]]
puts (b.flatten).to_s
puts a.index(1)
puts (a.insert(1, 10)).to_s
puts (a.join("-")).to_s
puts a.pop
puts a.shift
puts a.to_s
puts (a.push(100)).to_s
puts (a.reverse).to_s
执行上述代码,输出结果如下:
[1, 2, "a"]
[1, 2, nil, "a", 1, 3, 4, "thor", "loki", "tony"]
0
[1, 10, 2, nil, "a"]
1-10-2--a
a
1
[10, 2, nil]
[10, 2, nil, 100]
[100, nil, 2, 10]