【问题标题】:Find duplicate object by property and Merge using Javascript or UnderscoreJS按属性查找重复对象并使用 Javascript 或 UnderscoreJS 合并
【发布时间】:2018-05-25 12:14:11
【问题描述】:

我有一个如下所述的数组:

var somevalue = [{
    code: 1,
    name: 'a1'
  }, {
    code: 2,
    name: 'b1'
  }, {
    code: 1,
    name: 'a2'
  },
  {
    code: 1,
    name: 'a3'
  },
  {
    code: 2,
    name: 'b2'
  }
]

我想从这个数组中找到code 的重复元素,并将相同代码的所有元素合并为一个。所以最终的输出是:

var somevalue = [{
    code: 1,
    name: 'a1, a2'
  }, {
    code: 2,
    name: 'b1, b2, b3'
  }
]

有什么方法可以使用 underscoreJS 实现这一点吗?

我可以通过for-loop 做到这一点。但在实际场景中,它包含具有 10 个属性的 JSON 对象的非常大的数组。所以我需要一些面向性能的解决方案。

【问题讨论】:

    标签: javascript arrays underscore.js


    【解决方案1】:

    你可以使用array.reduce:

    var datas = [{
        code: 1,
        name: 'a1'
      }, {
        code: 2,
        name: 'b1'
      }, {
        code: 1,
        name: 'a2'
      },
      {
        code: 1,
        name: 'a3'
      },
      {
        code: 2,
        name: 'b2'
      }
    ];
    
    datas = datas.reduce((m, o) => {
      const found = m.find(e => e.code === o.code);
      found ? found.name += `, ${o.name}` : m.push(o);
      return m;
    }, []);
    
    console.log(datas);

    【讨论】:

      猜你喜欢
      • 2021-03-29
      • 2015-12-05
      • 2016-10-03
      • 1970-01-01
      • 1970-01-01
      • 2016-12-31
      • 1970-01-01
      • 2014-12-27
      • 1970-01-01
      相关资源
      最近更新 更多