Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 查找Rails中每个数组中出现的元素_Arrays_Ruby - Fatal编程技术网

Arrays 查找Rails中每个数组中出现的元素

Arrays 查找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=[[573574]、[573574]、[573]、[573574]]

如何查找每个数组上出现的元素?从这个数组中,我只想得到573
有人能帮我吗?

您可以在项目中找到最小的子数组以限制搜索集,然后从该数组中选择项目中所有其他数组中出现的所有元素:

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]]   #=> []