ruby - 试图 AND 列表列表中的所有元素
问题描述
我正在尝试通过对列表中的列表进行与运算来创建新的元素列表。
我已经尝试将列表放在一个while循环中,并使用一个表示列表长度的计数器,然后做
values = values[counter] && values [counter + 1]
但由于某种原因,这并没有给我正确的结果
简而言之,我的目标是:
values = [["B", "W"],["C","W"]]
...
result = ["W"]
解决方案
[["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
如果它的接收者是一个空数组,则为其分配一个初始值[]
。
推荐阅读
- r - 用 R 中的 if 语句填充 for 循环中的表
- microsoft-graph-api - 如何使用 Microsoft Graph API 阅读附加电子邮件的附件
- c++ - 如何使用 std::vector 中的备用容量?
- javascript - 为什么 Threebox.js 中的 WORLD_SIZE 为 1024000
- ios - 如何正确执行 SwiftUI StateObjects 的依赖注入?
- r - 拟合的 coxph 模型随时间变化的地层和集群的公式中的项排序而变化
- typescript - 如何在 TypeScript 中为单个文件启用严格模式?
- java - 从多个作为 Enum 参数的 Set 创建映射
- flutter - 如何在颤动图中定义最小和最大轴值?
- keycloak - MultiNOde 中的 KeyCloak 不与 infinispan 共享用户会话和令牌