javascript - 从对象数组中减少 javascript 对象
问题描述
我有一个这样的对象数组:
[{duration: 12, place: 3}, {duration: 21, place: 4}, {duration: 22, place: 3}]
我想合并来自同一个位置值的所有持续时间。如何在 javascript 中编写一个可以给我这样的输出的函数?
[{duration: 34, place: 3}, {duration: 21, place: 4}]
解决方案
另一种方法是使用该函数reduce
对具有相同位置值的对象进行分组。
const array = [{duration: 12, place: 3}, {duration: 21, place: 4}, {duration: 22, place: 3}],
result = Object.values(array.reduce((a, {duration, place}) => {
(a[place] || (a[place] = {duration: 0, place})).duration += duration;
return a;
}, {}));
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
推荐阅读
- testing - Flutter - 如何在小部件测试中获取文本小部件
- java - 为 WebSocketHandlerDecorator 编写测试 - 委托不能为空
- junit - 使用 Mockito 测试用例失败
- javascript - 从 Jasmine 重置方法的执行上下文
- c# - 获取两个日期之间的日期
- docker - puppet 中的 SSL 证书验证失败
- corda - net.corda.core.flows.UnexpectedFlowEndException:尝试使用空缓冲区访问已结束的会话 SessionId(toLong=8223329095323268472)
- javascript - 如果语句不起作用,如何修复 jQuery 多个 else
- python - 如何修改csv文件中的值
- javascript - 如何修复vscode中的gulp windows脚本主机错误