在Array of Hashes Ruby中删除重复的字段

bprjcwpo  于 12个月前  发布在  Ruby
关注(0)|答案(3)|浏览(83)

我有一个散列数组,其中包含具有重复字段的JSON,我想删除重复的字段:

[ {
  "code" : "32F",
  "lon" : 0.963335,
  "fint" : "2022-05-03T13:00:00",
  "prec" : 0.0,
},{
  "code" : "32F",
  "lon" : 0.963335,
  "fint" : "2022-05-03T13:00:00",
  "prec" : 0.0,
},{
  "code" : "90X",
  "lon" : 0.963335,
  "fint" : "2022-05-03T13:00:00",
  "prec" : 0.0,
}]

这是所需的输出:

[{
  "code" : "32F",
  "lon" : 0.963335,
  "fint" : "2022-05-03T13:00:00",
  "prec" : 0.0,
},{
  "code" : "90X",
  "lon" : 0.963335,
  "fint" : "2022-05-03T13:00:00",
  "prec" : 0.0,
}]

有什么想法吗?
谢谢你,谢谢

2nc8po8w

2nc8po8w1#

首先你有错误的语法
"code" : "32F",--这里不需要空格
右变量为"code": "32F",
你甚至不需要在这里引用。只有code: "32F",
从数组中删除个重复项--使用uniq!
小心

ary = [1, 1]
ary.uniq! # => [1]
ary # => [1]

ary = [1, 2]
ary.uniq! # => nil
ary # => [1, 2]

或者使用uniq不带bang返回新数组

ary = [1, 1]
ary.uniq # => [1]
ary # => [1, 1]

ary = [1, 2]
ary.uniq # => [1, 2]
ary # => [1, 2]

就您而言

ary =
  [{
    code: "32F",
    lon: 0.963335,
    fint: "2022-05-03T13:00:00",
    prec: 0.0,
  },{
    code: "32F",
    lon: 0.963335,
    fint: "2022-05-03T13:00:00",
    prec: 0.0,
  },{
    code: "90X",
    lon: 0.963335,
    fint: "2022-05-03T13:00:00",
    prec: 0.0,
  }]

ary.uniq!
# => [{:code=>"32F", :lon=>0.963335, :fint=>"2022-05-03T13:00:00", :prec=>0.0}, {:code=>"90X", :lon=>0.963335, :fint=>"2022-05-03T13:00:00", :prec=>0.0}]
vojdkbi0

vojdkbi02#

从enumerables模块尝试uniq。它应该在本地为您的用例工作。默认情况下,它可用于ruby数组。

n3schb8v

n3schb8v3#

使用.uniq应该对你有用。注意:你的哈希数组在每个键后面有额外的空间。你应该把它拿掉。

相关问题