小编典典

数组包含来自另一个数组的任何值?

all

测试数组是否包含第二个数组中的任何元素的最有效方法是什么?

下面的两个示例,试图回答这个问题确实foods包含来自 的任何元素cheeses

cheeses = %w(chedder stilton brie mozzarella feta haloumi reblochon)
foods = %w(pizza feta foods bread biscuits yoghurt bacon)

puts cheeses.collect{|c| foods.include?(c)}.include?(true)

puts (cheeses - foods).size < cheeses.size

阅读 122

收藏
2022-08-19

共1个答案

小编典典

(cheeses & foods).empty?

正如 Marc-André Lafortune
在评论中所说,&在线性时间内工作,而any?+include?将是二次的。对于较大的数据集,线性时间会更快。对于小型数据集,any?+include?可能会更快,如
Lee Jarvis 的回答所示——可能是因为&分配了一个新的 Array 而另一个解决方案没有,并且作为一个简单的嵌套循环返回一个布尔值。

2022-08-19