尝试对列表中的所有元素进行“与”运算

时间:2019-06-07 01:32:32

标签: ruby

我试图通过对列表中的列表进行“与”操作来创建新的元素列表。

我尝试将列表放入一个while循环中,并使用一个代表列表长度的计数器进行操作

values = values[counter] && values [counter + 1]

但是由于某种原因,这不能给我正确的结果

我的目标是简而言之:

values = [["B", "W"],["C","W"]]
...
result = ["W"]

1 个答案:

答案 0 :(得分:3)

[["B", "W"], ["C", "W"]].reduce([], :&)
  #=> ["W"]

[["B", "W", "A"], ["A", "C", "W"], ["W", "E", "A"]].reduce([], :&)
  #=> ["W", "A"]

请参见Enumerable#reduce(又名inject)和Array#&arr.reduce([], :&)的缩写为:

arr.reduce([]) { |intersection, a| intersection & a }
如果

reduce的接收者为空数组,则会为其分配初始值[]