繁体   English   中英

如何合并具有相同键的对象数组

[英]How to merge array of objects with same key

我有一个包含多个对象的数组,希望通过相同的键合并它们而不会丢失它们的值。

我在 stakoverflow 中尝试了一些答案,但没有一个对我有帮助。我想用 map/reduce 来做到这一点,但我不知道如何检索每个对象的键名来检查它们。

let rows = [
  { row1: [{ val: "row1-val1" }, { val: "row1-val2" }] },
  { row1: [{ val: "row1-val3" }, { val: "row1-val4" }] },
  { row1: [{ val: "row1-val5" }, { val: "row1-val6" }] },
  { parag: { text: "sample test" } },
  { row2: [{ val: "row2-val1" }, { val: "row2-val2" }] },
  { row2: [{ val: "row2-val3" }, { val: "row2-val4" }] },
  { row2: [{ val: "row2-val5" }, { val: "row2-val6" }] }
];

我想要这个结果:

let rows = [
  {
    row1: [
      { val: "row1-val1" },
      { val: "row1-val2" },
      { val: "row1-val3" },
      { val: "row1-val4" },
      { val: "row1-val5" },
      { val: "row1-val6" }
    ]
  },
  { parag: { text: "sample test" } },
  {
    row2: [
      { val: "row2-val1" },
      { val: "row2-val2" },
      { val: "row2-val3" },
      { val: "row2-val4" },
      { val: "row2-val5" },
      { val: "row2-val6" }
    ]
  }
];

你可以在reduce帮助下做到

 let rows = [{ row1: [{ val: "row1-val1" }, { val: "row1-val2" }] },{ row1: [{ val: "row1-val3" }, { val: "row1-val4" }] },{ row1: [{ val: "row1-val5" }, { val: "row1-val6" }] },{ parag: { text: "sample test" } },{ row2: [{ val: "row2-val1" }, { val: "row2-val2" }] },{ row2: [{ val: "row2-val3" }, { val: "row2-val4" }] },{ row2: [{ val: "row2-val5" }, { val: "row2-val6" }] }]; let op = rows.reduce((o,c)=>{ let key = Object.keys(c)[0]; if(o[key]){ o[key].push(...c[key]); } else { o[key] = c[key]; } return o; },{}) console.log(op)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM