3 回答

TA贡献1876条经验 获得超6个赞
我希望这有帮助
let counterObj = {};
let cars = [
{ id: 1, name: 'Mercedes', year: '2015' },
{ id: 2, name: 'Mercedes', year: '2000' },
{ id: 3, name: 'BMW', year: '2010' },
{ id: 4, name: 'BMW', year: '2004' },
{ id: 5, name: 'Volvo', year: '2012' },
{ id: 6, name: 'Volvo', year: '2014' }
];
for (let item of cars){
counterObj[item.name] = 1 + (counterObj[item.name] || 0)
}
console.log(counterObj);

TA贡献1856条经验 获得超11个赞
您可以使用其频率reduce生成地图。PostId
function mapFrequency(data) {
return data.reduce((map, datum) => {
if (map[datum.postId]) {
map[datum.postId] += 1;
} else {
map[datum.postId] = 1
}
return map;
}, {})
}
此函数将创建一个对象,其键为 as postId,值为其频率。
如果你想在你的样本中生成一个数组,你可以这样做
const frequencies = mapFrequency(data);
const result = Object.keys(frequencies).map((id) => {
return {
PostId: id,
frequency: frequencies[id]
}
});

TA贡献2016条经验 获得超9个赞
使用 reduce,您可以执行以下操作:
const na = data.reduce((acc, el) => {
acc[el.postId] = acc[el.postId] ? acc[el.postId] + 1 : 1;
return acc;
}, {});
与@sonEtLumiere 建议的几乎相同,但与reduce
添加回答
举报