【问题标题】:Get Duplicate Id and add all the Data in one id获取重复 ID 并将所有数据添加到一个 ID 中
【发布时间】:2021-01-01 23:46:19
【问题描述】:

我想提取同名对象并将所有数据添加到一个对象中。

 new = [{
        "data": [{ "displayName": "Peter pvt ltd", "name": "Peter Zon"}],
        "title": "9/9/2020",
    },{
        "data": [{ "displayName": "Tom pvt ltd", "name": "Tom wang", }, { "displayName": "parker pvt ltd", "name": "parker wing", }],
        "title": "9/9/2020", 
    }]

我想要类似下面的东西:

new = [{
        "data": [{ "displayName": "Peter pvt ltd", "name": "Peter Zon", }, { "displayName": "Tom pvt ltd", "name": "Tom wang", }, { "displayName": "parker pvt ltd", "name": "parker wing", }],
        "title": "9/9/2020",
    }]

【问题讨论】:

  • 只要搜索:"javascript array of objects group by"
  • 到目前为止,您自己尝试过什么来解决这个问题?
  • const 查找 = newArray.reduce((a, e) => { a[e.title] = ++a[e.title] || 0; return a; }, {}) ; newArray.filter(e => 查找[e.title])
  • 返回的是重复数据,我需要返回所有数据

标签: javascript arrays reactjs react-native filter


【解决方案1】:

您可以使用 javascript 中的 Array.reduce 方法对对象数组进行分组。

const objects = [{
        "data": [{ "displayName": "Peter pvt ltd", "name": "Peter Zon"}],
        "title": "9/9/2020",
    },{
        "data": [{ "displayName": "Tom pvt ltd", "name": "Tom wang", }, { "displayName": "parker pvt ltd", "name": "parker wing", }],
        "title": "9/9/2020", 
    }]

objects.reduce((acc,curr) => {
    const target = acc.find(item => curr.title === item.title); 
    if(target) {
      target.data = [...target.data, ...curr.data];
    } else {
       acc.push(curr);
    }
    return acc;
}, []);

【讨论】:

  • 非常感谢,这对我来说是救命稻草。您的解决方案完美运行。这就是我一直在寻找的东西。
  • 很高兴它解决了您的问题。如果对您有帮助,请标记为已接受。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-18
  • 1970-01-01
  • 1970-01-01
  • 2015-07-26
  • 2018-07-10
相关资源
最近更新 更多