数组包括来自另一个数组的值吗?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (9)

测试数组是否包含来自第二个数组的任何元素的最佳、最优雅/高效的方法是什么?

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

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

puts (cheeses - foods).size < cheeses.size
提问于
用户回答回答于
(cheeses & foods).empty?

&在线性时间工作any?+include?都是二次型的。对于较大的数据集,线性时间将更快。对于小数据集,any?+include?

用户回答回答于

可以检查该交叉口是否为空。

cheeses = %w(chedder stilton brie mozzarella feta haloumi)
foods = %w(pizza feta foods bread biscuits yoghurt bacon)
foods & cheeses
=> ["feta"] 
(foods & cheeses).empty?
=> false

扫码关注云+社区