微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将数组的对象一键合并为一个对象

如何解决将数组的对象一键合并为一个对象

如果数组的对象具有相同的键,我正在尝试将它们合并为一个

有这个数组:

let data = [
  { id: "1",cars: 5,pasta: 2 },{ id: "2",cars: 0,pasta: 0 },];

我想实现这一目标:

{{1}}

我正在寻找任何解决方案,但最好使用 ES6。

解决方法

这是一个结合了Array reduce 方法和Object values 方法的解决方案。这种方法的一个好处是它的时间复杂度为 O(n),这仅在您拥有大量数据时才真正重要,但仍然可能比在循环内包含循环的解决方案更有效。

let data = [
  { id: "1",cars: 5 },{ id: "1",pasta: 2 },{ id: "2",cars: 0 },pasta: 0 },];

const combined = Object.values(data.reduce((acc,el) => {
  acc[el.id] = { ...acc[el.id],...el };
  return acc;
},{}));

console.log(combined);

,

使用 Array.prototype.reduce()

let data = [
  { id: "1",]

const result = data.reduce((items,item) => {
  const existingItem = items.find(({ id }) => id === item.id)

  if (existingItem) Object.assign(existingItem,item)
  else items.push({ ...item })

  return items
},[])

console.log(result)

// Original array is left intact:
console.log(data)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。