我有以下这样一个对象数组。
const array = [ { x: 1, y: 2 }, { x: 3, y: 4 }, { x: 1, y: 2 }, { x: 3, y: 4 }, { x: 1, y: 2 }, { x: 3, y: 12 } ]
我希望能够计算重复对象并将计数存储为新的对象字段。
我找到了这个片段,它很好用,但它不完全是我所需要的。
const names = [{ _id: 1 }, { _id: 1}, { _id: 2}, { _id: 1}]
const result = [...names.reduce( (mp, o) => {
if (!mp.has(o._id)) mp.set(o._id, Object.assign({ count: 0 }, o));
mp.get(o._id).count++;
return mp;
}, new Map).values()];
console.log(result);
它适用于只有一个名为_id的字段的对象。在我的情况下,有两个字段x和y
我应该如何修改这段代码?
简而言之...我想要得到以下结果:
result = [ { x: 1, y: 2, count:3 }, { x: 3, y: 4, count:2 }, { x: 3, y: 12, count:1 } ]
JSON.stringify([o.x, o.y])
或者o.x+'|'+o.y
代替o._id
,只要它能唯一标识你的对象并适合你的数据类型。 - Bergi