怎样合并数组对象中id相同的数据

原数组: [{id: "1000001", value:[1.1, "1.1"]},
{id: "1000002", value:[2.1, "2.1"]},
{id: "1000001", value: [1.2, "1.2"]},
{id: "1000002", value:[2.2, "2.2"]},
{id: "1000001", value: [1.3, "1.3"]},
{id: "1000002", value:[2.3, "2.3"]},
]
期待的数组:
[
{id: "1000001", value:[[1.1, "1.1"],[1.2, "1.2"],[1.3, "1.3"]]},
{id: "1000002", value:[[2.1, "2.1"],[2.2, "2.2"],[2.3, "2.3"]]},
]
请各位路过的大佬帮忙,谢谢了!

阅读 7.2k
2 个回答
a.reduce((val, next) => {
    val[next.id] = val[next.id] ? val[next.id].concat(next.value) :  next.value
    return val
}, {})
function dedup (arr = []) {
  const mp = {}
  for (let obj of arr) {
    const { id , value} = obj
    if (mp[id]) {
      mp[id].value.push(value)
    } else {
      mp[id] = {id, value: [value]}
    }
  }
  return Object.values(mp)
}
const data = [{id: "1000001", value:[1.1, "1.1"]},
{id: "1000002", value:[2.1, "2.1"]},
{id: "1000001", value: [1.2, "1.2"]},
{id: "1000002", value:[2.2, "2.2"]},
{id: "1000001", value: [1.3, "1.3"]},
{id: "1000002", value:[2.3, "2.3"]},
]
console.log(dedup(data))
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题