Arrays 角度2管道-对象阵列的计算摘要
我有余额对象列表(例如,对象中有其他属性,但未导入):Arrays 角度2管道-对象阵列的计算摘要,arrays,angular,sum,pipe,reduce,Arrays,Angular,Sum,Pipe,Reduce,我有余额对象列表(例如,对象中有其他属性,但未导入): 我正在寻找一种智能管道,它可以在数组中求和(其他将平均)余额(不希望使用for-loop-但某些ES6功能,如reduce,但不确定如何使用)您需要编写自己的管道,下面应该给出您想要的。它将要求和的对象的属性作为参数 总和 import { Pipe, PipeTransform } from '@angular/core'; @Pipe({ name: 'sum' }) export class SumPipe implemen
我正在寻找一种智能管道,它可以在数组中求和(其他将平均)余额(不希望使用for-loop-但某些ES6功能,如reduce,但不确定如何使用)您需要编写自己的管道,下面应该给出您想要的。它将要求和的对象的属性作为参数 总和
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'sum'
})
export class SumPipe implements PipeTransform {
transform(items: any[], attr: string): any {
return items.reduce((a, b) => a + b[attr], 0);
}
}
你可以像使用其他管道一样使用它
<span>{{ balances | sum:'balances' }}</span>
谢谢你提供了一个很好的解决方案。我将其扩展为包括平面数组(不带属性),如下所示:if(attr){sum=items.reduce((a,b)=>a+b[attr],0);}else{sum=items.reduce((a,b)=>a+b,0);}
<span>{{ balances | sum:'balances' }}</span>
transform(items: any, attr: string): any {
let sum = items.reduce((a, b) => a + b[attr], 0);
return sum / items.length;
}