【问题标题】:How to merge array of objects if duplicate values are there, if key is common then merge common values in single key [duplicate]如果存在重复值,如何合并对象数组,如果键是通用的,则在单个键中合并通用值[重复]
【发布时间】:2020-01-02 07:57:04
【问题描述】:

这是一个对象的输入数组

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" }
]

【问题讨论】:

  • @CertainPerformance 看起来很适合质疑这与您提到的不同
  • 如果我不知道如何发布我的努力,伙计@CertainPerformance

标签: javascript arrays node.js typescript object


【解决方案1】:

使用reduce,一个Set来存储唯一的字母,然后join它们加上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; }

【讨论】:

    猜你喜欢
    • 2020-09-08
    • 2015-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-09
    • 2022-09-23
    • 2011-08-30
    相关资源
    最近更新 更多