Ruby 手册 | 22 - 数组 Array 的方法

225 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 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

deletedelete_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]