首页 > 解决方案 > 试图 AND 列表列表中的所有元素

问题描述

我正在尝试通过对列表中的列表进行与运算来创建新的元素列表。

我已经尝试将列表放在一个while循环中,并使用一个表示列表长度的计数器,然后做

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

但由于某种原因,这并没有给我正确的结果

简而言之,我的目标是:

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

标签: ruby

解决方案


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

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

请参阅Enumerable#reduce (aka inject) 和Array#&arr.reduce([], :&)是以下的简写:

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

reduce如果它的接收者是一个空数组,则为其分配一个初始值[]


推荐阅读