我试图用重复的“名称”属性合并每个对象,通过合并,我的意思是将它们的“值”属性加在一起并删除重复的属性。
由于某种原因,我的代码未给出预期的结果:
array = [
{ name: 'f', value: '10' },
{ name: '5', value: '10' },
{ name: 'f', value: '10' },
{ name: '5', value: '10' },
{ name: 'f', value: '10' },
{ name: '5', value: '10' },
]
for (let i = 0; i < array.length; i++) {
for (let y = 0; y < array.length; y++) {
if (array[y].name == array[i].name) {
array[i].value = parseInt(array[i].value) + parseInt(array[y].value)
array.splice(y,1)
}
}
}
console.log(array)
// gives result [ { name: '5', value: 30 }, { name: 'f', value: '10' } ]
// expected results [ { name: '5', value: 30 }, { name: 'f', value: '30' } ]
使用的组合reduce
,并map
做到这一点:
let array = [
{ name: 'f', value: '10' },
{ name: '5', value: '10' },
{ name: 'f', value: '10' },
{ name: '5', value: '10' },
{ name: 'f', value: '10' },
{ name: '5', value: '10' },
];
let resultObj = array.reduce((result, item) => {
result[item.name] = (result[item.name] || 0) + (Number(item.value) || 0);
return result;
}, {});
let resultArray = Object.getOwnPropertyNames(resultObj).map(name => {
return {name, value: resultObj[name]}
})
console.log(resultArray)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句