amu*_*u03 0 javascript reduce typescript
这就是我所拥有的:
const arrayA = [{name:'a', amount: 10, serviceId: '23a', test:'SUCCESS'},
{name:'a', amount: 9, test:'FAIL'},
{name:'b', amount: 15, serviceId: '23b', test:'SUCCESS'}]
Run Code Online (Sandbox Code Playgroud)
(请注意,有些对象没有“serviceId”)
我想得到:
[{name:'a', amount: 19, test:'FAIL'},
{name:'b', amount: 15, test:'SUCCESS'}]
Run Code Online (Sandbox Code Playgroud)
amount
。FAIL
是否有任何具有该值的对象FAIL
(按名称分组)serviceId
,也不想将其包含在新对象中。我已经搜索并尝试了这样的事情:(参考:/sf/answers/3523685231/)
const result = Object.values(arrayA.reduce((r, o) => (r[o.name]
? (r[o.name].amount += o.amount)
: (r[o.name] = {...o}), r), {}));
Run Code Online (Sandbox Code Playgroud)
但仍然不确定如何分配test
字段。
任何帮助,将不胜感激!
如有必要,您需要检查test
并更新该值。
const
array = [{ name: 'a', amount: 10, serviceId: '23a', test: 'SUCCESS' }, { name: 'a', amount: 9, test: 'FAIL' }, { name: 'b', amount: 15, serviceId: '23b', test: 'SUCCESS' }],
result = Object.values(array.reduce((r, { name, amount, test }) => {
if (!r[name]) r[name] = { name, amount: 0, test };
r[name].amount += amount;
if (test === 'FAIL') r[name].test = 'FAIL';
return r;
}, {}));
console.log(result);
Run Code Online (Sandbox Code Playgroud)
.as-console-wrapper { max-height: 100% !important; top: 0; }
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1869 次 |
最近记录: |