Arrays 查找Rails中每个数组中出现的元素
我有以下数组:items=[[573574]、[573574]、[573]、[573574]] 如何查找每个数组上出现的元素?从这个数组中,我只想得到573Arrays 查找Rails中每个数组中出现的元素,arrays,ruby,Arrays,Ruby,我有以下数组:items=[[573574]、[573574]、[573]、[573574]] 如何查找每个数组上出现的元素?从这个数组中,我只想得到573 有人能帮我吗?您可以在项目中找到最小的子数组以限制搜索集,然后从该数组中选择项目中所有其他数组中出现的所有元素: items.flatten.uniq.select{|x| items.map{|y| y.include? x}.all?} 如果保证所有元素中只有一个元素,那么可以使用detect而不是select我必须使用注释来说明这是
有人能帮我吗?您可以在项目中找到最小的子数组以限制搜索集,然后从该数组中选择项目中所有其他数组中出现的所有元素:
items.flatten.uniq.select{|x| items.map{|y| y.include? x}.all?}
如果保证所有元素中只有一个元素,那么可以使用detect而不是select我必须使用注释来说明这是一个非常干净的解决方案。
items.min_by(&:length).select do |element|
items.all? { |sub_array| sub_array.include?(element) }
end
# => [573]
def appears_in_all(arr)
arr.reduce(:&)
end
appears_in_all [[573, 574], [573, 574], [573], [573, 574]] #=> [573]
appears_in_all [[573, 574], [573, 574], [573, 574, 578], [573, 574]] #=> [573, 574]
appears_in_all [[573, 574], [573, 574], [573], [573, 574], [2, 4]] #=> []