当前位置: 首页 > 知识库问答 >
问题:

如何合并数组的对象,如果有重复的值,如果键是共同的,然后合并共同的值在单键[重复]

酆恩
2023-03-14

这是一个对象的输入数组

var array= [
    { name : "c", arr: "d" },
    { name : "a", arr: "b" },
    { name : "c", arr: "e" },
    { name : "a", arr: "b" },
    { name : "c", arr: "d" }
];

结果应该是这样的

var result =[
     { name : "c", arr: "d,e" },
     { name : "a", arr: "b" }
]

共有1个答案

逄嘉木
2023-03-14

使用reduce,一个Set存储唯一的字母,然后将它们与map连接在一起,最后:

var array= [
    { name : "c", arr: "d" },
    { name : "a", arr: "b" },
    { name : "c", arr: "e" },
    { name : "a", arr: "b" },
    { name : "c", arr: "d" }
];

const res = Object.values(array.reduce((a, { name, arr }) => {
  a[name] = a[name] || { name, arr: new Set() };
  a[name].arr.add(arr);
  return a;
}, {})).map(({ name, arr }) => ({ name, arr: [...arr].join(",")}));

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

 类似资料: