如何在javascript的数组中保留具有特定唯一属性的对象?

问题描述 投票:0回答:1

我有一个像这样的数组:

var myarray = [
    {"scaleId":"001","currentWeight":0.200}
    {"scaleId":"002","currentWeight":0.300},
    {"scaleId":"001","currentWeight":0.255},
    {"scaleId":"002","currentWeight":0.000},
    {"scaleId":"003","currentWeight":0.340},
    ]

并且我想保留具有唯一scaleId的对象。因此,对于上面的示例,输出将是这样(如果scaleId是重复的,则可以保留任何随机对象):

myarray = [
    {"scaleId":"001","currentWeight":0.200}
    {"scaleId":"002","currentWeight":0.300},
    {"scaleId":"003","currentWeight":0.340},
    ]

我已经在我的应用程序中使用了下划线库,所以我对使用下划线的实现很好。我想出了一个解决方案,但未按预期工作。因此,任何帮助都会很棒。

javascript underscore.js
1个回答
0
投票

您可以使用reduce

var myarray = [{
    "scaleId": "001",
    "currentWeight": 0.200
  },
  {
    "scaleId": "002",
    "currentWeight": 0.300
  },
  {
    "scaleId": "001",
    "currentWeight": 0.255
  },
  {
    "scaleId": "002",
    "currentWeight": 0.000
  },
  {
    "scaleId": "003",
    "currentWeight": 0.340
  }
]

let data = myarray.reduce((acc, curr) => {
  if (!acc[curr.scaleId]) {
    acc[curr.scaleId] = curr
  }
  return acc;
}, {});

console.log(Object.values(data))
© www.soinside.com 2019 - 2024. All rights reserved.