【发布时间】:2021-03-15 06:57:12
【问题描述】:
这就是我所拥有的:
const arrayA = [{name:'a', amount: 10, serviceId: '23a', test:'SUCCESS'},
{name:'a', amount: 9, test:'FAIL'},
{name:'b', amount: 15, serviceId: '23b', test:'SUCCESS'}]
(注意有些对象没有'serviceId')
我想得到:
[{name:'a', amount: 19, test:'FAIL'},
{name:'b', amount: 15, test:'SUCCESS'}]
- 我想对按名称分组的
amount字段求和。 - 如果有任何对象的值为
FAIL(按名称分组),则'test'字段应为FAIL - 我不关心
serviceId的值,也不想将它包含在新对象中。
我已经搜索过,并尝试过这样的事情: (参考:https://stackoverflow.com/a/50338360/13840216)
const result = Object.values(arrayA.reduce((r, o) => (r[o.name]
? (r[o.name].amount += o.amount)
: (r[o.name] = {...o}), r), {}));
但仍不确定如何分配test 字段。
任何帮助将不胜感激!
【问题讨论】:
标签: javascript typescript reduce