首页 > 解决方案 > 需要一种有效的方法在 javascript 中对对象数组进行分组

问题描述

有没有办法通过引用数组中对象的某个值来对对象数组进行分组

假设我确实有一个名为的数组

a=[
{name: "abc", address: "xxx"}
{name: "def", address: "yyy"}
{name: "xyz", address: "xyz"}
{name: "abc", address1: "123"}
{name: "def", address1: "456"}
]

我需要将同名的地址添加到一个对象中,新的数组应该如下所示

b =[
{name:"abc", address: "xxx", address1: "123"}
{name:"def", address: "yyy", address1: "456"}
{name: "xyz", address: "xyz"}
]

标签: javascriptarraysobject

解决方案


您可以使用reduce按名称分组的功能Object.values和提取分组对象的功能。

let a = [{name: "abc", address: "xxx"},{name: "def", address: "yyy"},{name: "xyz", address: "xyz"},{name: "abc", address1: "123"},{name: "def", address1: "456"}],
    result = Object.values(a.reduce((a, {name, ...rest}) => {
      a[name] = Object.assign(a[name] || {name}, rest);
      return a;
    }, Object.create(null)));

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }


推荐阅读