遍历 Ruby 数组

Nurudeen Ibrahim 2023年1月30日 2022年5月18日
  1. 使用 each 方法遍历 Ruby 数组
  2. 使用 for 循环遍历 Ruby 数组
  3. 使用 reverse_each 方法遍历 Ruby 数组
  4. 使用 each_with_index 方法遍历 Ruby 数组
  5. 使用 map 方法遍历 Ruby 数组
  6. 使用 select 方法遍历 Ruby 数组
  7. 使用 reject 方法遍历 Ruby 数组
遍历 Ruby 数组

Ruby 中的数组类包含 Enumerable mixin,因此它有几个横向方法。在本教程中,我们将研究这些可枚举的方法和其他在 Ruby 中遍历数组的方法。

使用 each 方法遍历 Ruby 数组

这是 Ruby 中最常用的迭代器。

示例代码:

fruits = ['Orange', 'Apple', 'Banana']

fruits.each do |fruit|
  puts fruit
end

输出:

Orange
Apple
Banana

使用 for 循环遍历 Ruby 数组

此方法可能会产生不良副作用,因此不推荐使用。

示例代码:

fruits = ['Orange', 'Apple', 'Banana']

for fruit in fruits
  puts fruit
end

输出:

Orange
Apple
Banana

如果在上面的示例中早先定义了一个 fruit 变量,for 循环将用 fruits 数组的最后一个元素覆盖它。这是一个范围界定问题,其行为如下所示。

示例代码:

fruit = 'Mango'
fruits = ['Orange', 'Apple', 'Banana']

for fruit in fruits
  puts fruit
end

puts fruit

输出:

Orange
Apple
Banana
Banana

使用 reverse_each 方法遍历 Ruby 数组

顾名思义,这与 each 方法类似,但顺序相反。

示例代码:

fruits = ['Orange', 'Apple', 'Banana']

fruits.reverse_each do |fruit|
  puts fruit
end

输出:

Banana
Apple
Orange

使用 each_with_index 方法遍历 Ruby 数组

此方法在你需要获取数组的每个元素和索引的情况下很有用。

示例代码:

fruits = ['Orange', 'Apple', 'Banana']
fruits.each_with_index do |fruit|
  puts "#{index}. #{fruit}"
end

输出:

0. Orange
1. Apple
2. Banana

尽管上面的示例演示了遍历数组的最简单方法,但是当你需要遍历数组并对其中的每个元素执行一些操作时,这些方法通常会派上用场 - 例如,遍历电子邮件地址列表和向他们每个人发送消息。

我们将在本教程中提到的其余方法与上面提到的方法有些不同,它们将一个数组转换为另一个数组。

使用 map 方法遍历 Ruby 数组

如果你想修改数组的每个元素并将它们作为新数组,这很有用。

示例代码:

numbers = [2, 4, 6]

doubles = numbers.map do |n|
  n * 2
end

puts doubles

输出:

[4, 8, 12]

请注意,还有一个 collect 方法,map 的别名,它们的行为方式相同。

使用 select 方法遍历 Ruby 数组

顾名思义,select 方法允许你仅选择数组中满足特定逻辑条件的特定元素。它还会生成一个新数组。

示例代码:

numbers = [2, 3, 4, 5, 6, 7, 8, 9]

perfect_squares = numbers.select do |n|
  Math.sqrt(n) % 1 == 0
end

puts perfect_squares

输出:

[4, 9]

请注意,还有一个 find_all 方法,它是 select 的别名,它们的行为方式相同。

使用 reject 方法遍历 Ruby 数组

reject 方法与 select 方法相反,当你需要拒绝数组的某些特定元素并将其余元素作为新数组返回时,它很有用。

示例代码:

numbers = [-2, -1, 0, 1, 2, 3]

positive_integers = numbers.reject do |n|
  n < 1
end

puts positive_integers

输出:

[1, 2, 3]

相关文章 - Ruby Array