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

时间:2017-03-03 07:51:19

标签: arrays ruby

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

private void button2_Click(object sender, EventArgs e)
{
    IHubContext hubContext = lobalHost.ConnectionManager.GetHubContext<MyHub>();
    UserHandler.ConnectedIds = hubContext.Clients.All.ConnectionId;
    listBox1.Items.Add(UserHandler.ConnectedIds);
}

我想要做的是快速扫描内部数组,看看它们中是否包含数字[[1830, 1], [1859, 1]] 。如果是,我希望它返回包含上述示例中的数字1830,又名1830的整个数组。

我知道正常的值数组,我只会做[1830, 1],但这在这里不起作用,如下所示:

array.include? 1830

我该怎么做?

1 个答案:

答案 0 :(得分:6)

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