【问题标题】:Given two arrays of hashes, How can we match hashes from both arrays that have a matching key:value给定两个哈希数组,我们如何匹配两个数组中具有匹配键的哈希:值
【发布时间】:2020-07-16 06:09:25
【问题描述】:

在 Ruby 中,给定两个哈希数组。我们如何匹配这两个数组中的哪些哈希都匹配相同的特定键:这些哈希的值?

例子

A = [{ "Jane Doe" => 10, "Jim Doe" => 6 }, { "Jane Doe" => 11, "Jim Doe" => 12 }, ...]
B = [{ "Jane Doe" => 10, "Jim Doe" => 5 }, { "Jane Doe" => 12, "Jim Doe" => 1 }, ...]

比较数组 A 和 B。我们将遍历 A 和 B 中的所有哈希值。我们正在寻找值为 10 的键 "Jane Doe"。我们看到 "Jane Doe" => 10 在两者中是相同的索引 0 的数组。我们返回两个数组的整个哈希值,因为它们对键“Jim Doe”有不同的信息。

脚本的结果可能是两个匹配哈希的返回。一个来自 A,一个来自 B。或者,如果我们首先在 A 上迭代,而我们的内部迭代在 B 上,尝试匹配 A,那么我们可以只返回来自 B 的匹配哈希。

有什么想法吗?

【问题讨论】:

  • 请举例说明结果的样子。
  • 全部设置@Mosaaleb
  • 提供输出的外观比对输出外观的大量解释要容易得多
  • 这听起来也很像“请给我写代码”,你甚至不确定你想要从中得到什么(不想通过显示你想要的输出来限制答案,这也会导致这与基于意见的接壤,基于每个回答者对输出有不同的意见,您最终可能会得到很多“相同的答案”,唯一的区别是“这是 X 的答案,但它返回 Y 而不是是“更好”)。这是家庭作业吗?你试过什么?为什么没用?怎么没用?
  • 您遇到问题的代码是什么?你的代码有什么问题?您收到错误消息吗?错误信息是什么?你得到的结果不是你期望的结果吗?你期望什么结果,为什么,你得到的结果是什么,两者有什么不同?您正在观察的行为不是期望的行为吗?期望的行为是什么,为什么,观察到的行为是什么,它们有何不同?请提供minimal reproducible example。请注意,Stack Overflow 不是“为我编写代码”服务。

标签: ruby hash


【解决方案1】:
matched_results = []

a.each do |h1|
  b.each do |h2|
    if (h1.keys & h2.keys).all? {|k| h1[k] == h2[k]}
      matched_results << h1
    end
  end
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-12
    • 1970-01-01
    • 1970-01-01
    • 2017-03-25
    • 2011-04-12
    • 2018-01-28
    • 1970-01-01
    • 2018-06-14
    相关资源
    最近更新 更多