由于与另一个数据集的连接,我有一组具有重复唯一 ID 的对象。这是由于 API 返回数据的限制。我想要做的是在 JavaScript 中找到重复的行并加入唯一的数据列。例如,这就是我所拥有的:
var data = [
{id: 1, name: 'Joe', type:'Red'},
{id: 2, name: 'Smith', type:'Red'},
{id: 2, name: 'Smith', type:'Green'},
{id: 3, name: 'Ana', type:'Blue'},
];
这是我需要的结果:
var data = [
{id: 1, name: 'Joe', type:'Red'},
{id: 2, name: 'Smith', type:'Red, Green'},
{id: 3, name: 'Ana', type:'Blue'},
];
我想我可以创建一个嵌套的 for 循环,但我相信性能方面它不会很理想。我尝试使用 Array.prototype.filter 但无法在这里实现我所需要的。
我建议您使用一组类型,它更干净且可重用。
这种方法使用对Array.prototype.reduce
对象进行分组id
的函数Object.values
和提取分组对象的函数。
var data = [ {id: 1, name: 'Joe', type:'Red'}, {id: 2, name: 'Smith', type:'Red'}, {id: 2, name: 'Smith', type:'Green'}, {id: 3, name: 'Ana', type:'Blue'}],
result = Object.values(data.reduce((a, c) => {
(a[c.id] || (a[c.id] = Object.assign({}, c, {type: []}))).type.push(c.type);
return a;
}, Object.create(null)));
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句