Javascript 如何使用数组方法对数组中对象的属性求和
我需要一些帮助,我正在尝试按名称属性合并此对象,但我被卡住了,我正在尝试通过数组方法而不是for循环来解决此问题Javascript 如何使用数组方法对数组中对象的属性求和,javascript,algorithm,Javascript,Algorithm,我需要一些帮助,我正在尝试按名称属性合并此对象,但我被卡住了,我正在尝试通过数组方法而不是for循环来解决此问题 var arr = [ {name: 'lucas', number: 20}, {name: 'lucas', number: 22}, {name: 'luna', number: 10}, {name: 'luna', number: 23}, {name: 'diego', number: 15} ]; var expected
var arr = [
{name: 'lucas', number: 20},
{name: 'lucas', number: 22},
{name: 'luna', number: 10},
{name: 'luna', number: 23},
{name: 'diego', number: 15}
];
var expectedOutput = [
{name: 'lucas', number: 42},
{name: 'luna', number: 33},
{name: 'diego', number: 15}
];
您可以使用
reduce
并获取Object.values
,以获得预期的输出。以下是工作示例:
var arr=[{name:'lucas',编号:20},{name:'lucas',编号:22},{name:'luna',编号:10},{name:'luna',编号:23},{name:'diego',编号:15}];
var result=Object.values(arr.reduce((acc,{name,number})=>{
acc[name]=acc[name]|{name,编号:0};
acc[名称]。编号+=编号;
返回acc;
},{}));
控制台日志(结果)代码>
var arr=[{name:'lucas',number:20},{name:'lucas',number:22},{name:'luna',number:10},{name:'luna',number:23},{name:'diego',number:15}];
让finalResult=arr.reduce((结果,对象)=>{
如果(结果[对象名称]){
结果[obj.name].number+=obj.number | | 0
}否则{
结果[obj.name]={…obj};
}
返回结果
}, {})
finalResult=Object.values(finalResult)
console.log(finalResult)
reduce
是您所需要的一切我都知道,但我正在尝试了解如何应用reduce