繁体   English   中英

如何在javascript中过滤和修改数组中的每个对象?

[英]How can i filter and modify each object in array in javascript?

我正在开发一个小 webapp,它从 api 接收一组对象,然后在向每个对象添加一些数据并删除其他对象后在页面上显示结果。

如果当前索引元素与下一个元素相同,我已经通过 chechink 尝试过,但由于某种原因它不起作用。

const initialArray = [
{ x: 'one', y: 'place1'},
{ x: 'one', y: 'place1'},
{ x: 'two', y: 'place2'},
{ x: 'three', y: 'place3'},
{ x: 'three', y: 'place3'},
{ x: 'three', y: 'place3'},
{ x: 'four', y: 'place4'}
]

预期的结果应该是:

let resArray = [
{ x: 'one' , y: 'place1', count: 2},
{ x: 'two', y: 'place2', count: 1 },
{ x: 'three', y: 'place3', count: 3 },
{ x: 'four', y: 'place4', count: 1 }
]

控制台没有给出任何错误,所以这意味着我的算法不正确。 感谢您的支持

你可以使用reduce()

 const initialArray = [ { x: 'one', y: 'place1'}, { x: 'one', y: 'place1'}, { x: 'two', y: 'place2'}, { x: 'three', y: 'place3'}, { x: 'three', y: 'place3'}, { x: 'three', y: 'place3'}, { x: 'four', y: 'place4'} ]; const res = initialArray.reduce((ac,{x,y}) => { let k = `${x}_${y}` if(!ac[k]) ac[k] = {x,y,count:0}; ac[k].count++; return ac; },{}) console.log(Object.values(res))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM