假设我有一个如下所示的数组:
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
我该怎么做?
答案 0 :(得分:6)
a = [[1830, 1], [1859, 1]]
a.find { |ar| ar.grep(1830) }
#=> [1830, 1]
参考文献:
正如@Ilya在评论中提到的,不是用grep
遍历整个数组,而是可以使用该方法返回匹配条件的布尔元素:
a.find { |ar| ar.include?(1830) }
参考文献:
如果您的阵列中有多个匹配的数组,则可以使用Enumerable#find_all
:
a = [[1830, 1], [1859, 1], [1893, 1830]]
a.find_all { |ar| ar.include?(1830) }
#=> [[1830, 1], [1893, 1830]]