【问题标题】:how to merge 4 arrays object using lodash如何使用 lodash 合并 4 个数组对象
【发布时间】:2020-09-16 13:56:14
【问题描述】:

我正在寻找最好的方法。

exData1 = [
  { name: "b", data1: "aa" },
  { name: "c", data1: "ee" },
];
exData2 = [
  { name: "a", data2: "cc" },
  { name: "b", data2: "bb" },
];
exData3 = [
  { name: "a", data3: "ee" },
  { name: "c", data3: "eee" },
];
exData4 = [
  { name: "a", data4: "ff" },
  { name: "b", data4: "cc" },
];

我想要的最终结果是一个与lodash合并的数组:

resultData = [{
    name: "b",
    data1: "aa",
    data2: "bb",
    data4: "cc",
  },
  {
    name: "c",
    data1: "ee",
    data3: "eee",
  },
  {
    name: "a",
    data2: "cc",
    data3: "eee",
    data4: "ff"
  },
];

如何使用 lodash 以最有效/最干净的方式做到这一点?谢谢!

【问题讨论】:

    标签: javascript arrays object merge lodash


    【解决方案1】:

    不需要lodash!

    function combine(items = []) {
      return Object.values(items.flat().reduce((a, c) => {
        a[c.name] = {...(a[c.name] || {}), ...c};
        return a;
      }, {}));
    }
    
    exData1 = [
      { name: "b", data1: "aa" },
      { name: "c", data1: "ee" },
    ];
    exData2 = [
      { name: "a", data2: "cc" },
      { name: "b", data2: "bb" },
    ];
    exData3 = [
      { name: "a", data3: "ee" },
      { name: "c", data3: "eee" },
    ];
    exData4 = [
      { name: "a", data4: "ff" },
      { name: "b", data4: "cc" },
    ];
    
    console.log(combine([exData1, exData2, exData3, exData4]));

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-08
      • 2019-05-07
      • 1970-01-01
      • 2016-12-01
      • 1970-01-01
      • 2016-12-31
      • 2016-06-12
      相关资源
      最近更新 更多