【问题标题】:I have an array of object like this [duplicate]我有一个像这样的对象数组[重复]
【发布时间】:2020-10-26 06:53:36
【问题描述】:
let attributeSet =  [{
    "id": 1,
    "value": 11
  },
  { 
    "id" : 1,
    "value": 12
  },
  {
    "id" : 1,
    "value" : 13
  },
  {
      "id": "2",
      "value" : "Qwerty"
  }
]

我想像这样将所有值组合起来

attributeSet = [
  {
    "id": 1,
    "value": [11, 12, 13]
  },
  {
    "id": 2, 
    "value": "Qwerty"
  }
]

我使用两个 for 循环来比较 id,然后将其推送到数组中。有人可以建议我更好的方法吗?

【问题讨论】:

标签: javascript node.js json


【解决方案1】:

您可以使用reduce & inside 回调检查累加器对象是否具有与迭代对象的id 相同的键。如果没有,则创建密钥并将值推送给它

let attributeSet = [{
    "id": 1,
    "value": 11
  },
  {
    "id": 1,
    "value": 12
  },
  {
    "id": 1,
    "value": 13
  },
  {
    "id": "2",
    "value": "Qwerty"
  }
]

let newData = attributeSet.reduce((acc, curr) => {
  if (!acc[curr.id]) {
    acc[curr.id] = {
      id: curr.id,
      value: []
    }
  }
  acc[curr.id].value.push(curr.value)

  return acc;
}, {});

console.log(Object.values(newData))

【讨论】:

    猜你喜欢
    • 2023-04-07
    • 1970-01-01
    • 2023-04-05
    • 2013-01-02
    • 2020-08-26
    • 2017-06-02
    • 2016-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多