繁体   English   中英

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

[英]How do I check to see if an array of arrays has a value within the inner arrays?

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

[[1830, 1], [1859, 1]]

我想做的是快速扫描内部数组,看是否其中任何一个包含数字1830 如果是这样,我希望它返回整个数组,该数组包含上例中的数字1830 ,又名[1830, 1]

我知道对于一个普通的值数组,我只会做array.include? 1830 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

我怎么做?

a = [[1830, 1], [1859, 1]]
a.find { |ar| ar.grep(1830) }
#=> [1830, 1]

参考文献:

编辑1

正如@Ilya在评论中提到的,而不是使用grep遍历整个数组,您可以使用方法返回找到符合条件的布尔值:

a.find { |ar| ar.include?(1830) }

参考文献:

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

万一数组中有多个匹配数组,可以使用Enumerable# find_all

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM