如何检查数组数组是否在内部数组中有值?

mar*_*ion 0 ruby arrays

假设我有一个如下所示的数组:

[[1830, 1], [1859, 1]]
Run Code Online (Sandbox Code Playgroud)

我想要做的是快速扫描内部数组,看看它们中是否包含数字1830.如果是这样,我希望它返回包含数字的整个数组1830,也就是[1830, 1]上面的例子.

我知道一个正常的值数组,我会这样做array.include? 1830,但这在这里不起作用,如下所示:

@add_lines_num_start
#=> [[1830, 1], [1859, 1]]
@add_lines_num_start.include? 1830
#=> false
@add_lines_num_start.first.include? 1830
#=> true
Run Code Online (Sandbox Code Playgroud)

我怎么做?

And*_*eko 6

a = [[1830, 1], [1859, 1]]
a.find { |ar| ar.grep(1830) }
#=> [1830, 1]
Run Code Online (Sandbox Code Playgroud)

参考文献:

编辑1

正如@Ilya在评论中提到的,不是遍历整个数组,而是grep使用该方法返回布尔值,找到匹配条件的元素:

a.find { |ar| ar.include?(1830) }
Run Code Online (Sandbox Code Playgroud)

参考文献:

编辑2(在OP下的@Cary评论中无耻地被盗)

如果您的阵列中有多个匹配的数组,则可以使用Enumerable#find_all:

a = [[1830, 1], [1859, 1], [1893, 1830]]
a.find_all { |ar| ar.include?(1830) }
#=> [[1830, 1], [1893, 1830]]
Run Code Online (Sandbox Code Playgroud)