Ruby数组中查找子数组的值

6

我有一个数组的数组,看起来像这样:

a = [['1','1500','SomeName','SomeSurname'],
['2','1500','SomeName2','SomeSurname2'],
['3','1500','SomeName3','SomeSurname3'],
['4','1501','SomeName','SomeSurname'],
...]

我可以使用 .each 函数和简单的 if 语句获取包含'1500'值的所有行的子数组,但如果 a.length 很大,处理时间会太长!如何在不迭代 a 的情况下获取所有来自 a 的具有特定 a[1] 值的行?

3个回答

10

Enumerable#find_all 是您要查找的内容:

a.find_all { |el| el[1] == '1500' } # a.select will do the same

7
您有几种选择,您可以使用 find 方法:
a.find { |l| l[1] == '5' }

这将找到与前5个匹配的数组。

您需要使用find_all来查找所有:

a.find_all { |l| l[1] == '5' }

但它会找到所有匹配项,还是只有第一个? - Krzysztof Witczak
1
安德烈做得很好,我没有注意到你想要全部。 - ABrowne

1
使用 select 来获取所有匹配的元素:
a.select { |e| e[1] == '1500' }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接