【问题标题】:Ruby deep_merge on an array of hashes散列数组上的 Ruby deep_merge
【发布时间】:2014-03-03 06:27:35
【问题描述】:

我想合并嵌套在数组中的哈希上的属性,该数组嵌套在哈希中。

ball = {
  name: "Hugh",
  colors: [
    {name: "Blue"},
    {name: "Red"}
  ]
}

我尝试使用deep merge,但我认为它只支持合并到嵌套哈希,而不是哈希数组。

balls.deep_merge(size: "small")

输出:

ball = {
  name: "Hugh",
  colors: [
    {name: "Blue"},
    {name: "Red"}
  ],
  size: "small"
}

预期输出。

ball = {
  name: "Hugh",
  colors: [
    {name: "Blue", size: "small"},
    {name: "Red", size: "small"}
  ]
}

【问题讨论】:

    标签: ruby-on-rails ruby arrays hash


    【解决方案1】:

    您可以遍历数组(取决于您需要它的抽象程度)。

    ball[:colors].each {|c| c[:size] = "small"}
    

    或者,假设您有一个“球”数组,这将适用于批量分配。

    balls.each {|ball| ball[:colors].each {|c| c[:size] = "small"} }
    

    【讨论】:

      【解决方案2】:

      恐怕没有什么可以自动执行此操作。程序无法知道{ size: "small" } 是要进入colors 键的每个散列而不是其他任何散列。

      但是您已经有了一个良好的开端,几乎将问题表述为单元测试,所以我毫不怀疑您可以找到使用 TDD 执行此操作的手动方法!

      【讨论】:

      • 我怀疑这是否值得回答,应该更多的评论
      猜你喜欢
      • 2011-05-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-28
      • 2011-07-24
      • 1970-01-01
      • 2023-03-11
      • 2014-08-31
      • 2015-12-15
      相关资源
      最近更新 更多