我试图通过对列表中的列表进行“与”操作来创建新的元素列表。
我尝试将列表放入一个while循环中,并使用一个代表列表长度的计数器进行操作
values = values[counter] && values [counter + 1]
但是由于某种原因,这不能给我正确的结果
我的目标是简而言之:
values = [["B", "W"],["C","W"]]
...
result = ["W"]
答案 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
的接收者为空数组,则会为其分配初始值[]
。