javascript - 如何使用数组方法对数组中对象的属性求和
问题描述
我需要一些帮助,我试图通过 name 属性合并这些对象,但我被卡住了,我试图通过数组方法而不是 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', number: 20}, {name: 'lucas', number: 22}, {name: 'luna', number: 10} , {name: 'luna', number: 23}, {name: 'diego', number: 15}];
var result = Object.values(arr.reduce((acc, {name, number})=>{
acc[name] = acc[name] || {name, number:0};
acc[name].number+=number;
return acc;
},{}));
console.log(result);
推荐阅读
- javascript - 从 React 中的 ref 回调中读取 getBoundingClientRect 值
- javascript - 如何在reactjs中聚焦div元素并停止默认滚动
- javascript - 返回函数的函数 - ?
- node.js - 自定义操作 Bot 框架
- amazon-web-services - S3 上托管的单个 Angular 6 项目中两个不同域的两个不同模块
- c# - SonarQube 异常与 ubuntu 上的 .net 框架应用程序
- c - C中三重指针的目的
- sql - Typo3 幻灯片元素翻译 - 无法编辑
- ios - 如何使用 swift 将 Firebase 集成到 ios 应用程序中?
- c++ - 使用模板类重载 cout