Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用数组方法对数组中对象的属性求和_Javascript_Algorithm - Fatal编程技术网

Javascript 如何使用数组方法对数组中对象的属性求和

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

我需要一些帮助,我正在尝试按名称属性合并此对象,但我被卡住了,我正在尝试通过数组方法而不是for循环来解决此问题

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