如何过滤和修改 javascript 数组中的每个对象?
How can i filter and modify each object in array in javascript?
我正在开发一个小网络应用程序,它从 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))
我正在开发一个小网络应用程序,它从 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))