Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 角度2管道-对象阵列的计算摘要_Arrays_Angular_Sum_Pipe_Reduce - Fatal编程技术网

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;
}