代码之家  ›  专栏  ›  技术社区  ›  rustyshackleford

基于嵌套值从哈希数组中清除哈希

  •  1
  • rustyshackleford  · 技术社区  · 6 年前

    我遇到了一个有趣的情况。如果哈希数组中的某个特定值是重复的,我想从该数组中删除该值。下面是我正在使用的结构的一个例子:

    [
      {
        "PCDBPart": {
          "Category": {
            "ID": 22,
            "Name": "Wiper and Washer"
          }
        },
        "Position": {
          "Name": "Right",
          "PCDBPositionID": 12,
          "PositionID": 10
        }
      },
      {
        "PCDBPart": {
          "Category": {
            "ID": 22,
            "Name": "Wiper and Washer"
          }
        },
        "Position": {
          "Name": "Right",
          "PCDBPositionID": 12,
          "PositionID": 10
        }
      },
      {
        "PCDBPart": {
          "Category": {
            "ID": 24,
            "Name": "Wiper and Washer"
          }
        },
        "Position": {
          "Name": "Right",
          "PCDBPositionID": 2,
          "PositionID": 4
        }
      }
    ]
    

    我的问题是 Position 经常重复,使数组变大。我想返回一个数组,该数组的哈希值由 PositionID 它们包含。

    我试着用 my_array.uniq { |h| h.dig(:Position, :PositionID)} ,但这似乎只返回了一个值:

    [
      {
        "PCDBPart": {
          "Category": {
            "ID": 22,
            "Name": "Wiper and Washer"
          }
        },
        "Position": {
          "Name": "Right",
          "PCDBPositionID": 12,
          "PositionID": 10
        }
      },
    ]
    

    以下是所需的输出:

    [
      {
        "PCDBPart": {
          "Category": {
            "ID": 22,
            "Name": "Wiper and Washer"
          }
        },
        "Position": {
          "Name": "Right",
          "PCDBPositionID": 12,
          "PositionID": 10
        }
      },
      {
        "PCDBPart": {
          "Category": {
            "ID": 24,
            "Name": "Wiper and Washer"
          }
        },
        "Position": {
          "Name": "Right",
          "PCDBPositionID": 2,
          "PositionID": 4
        }
      }
    ]
    

    有人对如何进行有什么建议吗?

    0 回复  |  直到 6 年前