2017-02-10 92 views
4

的陣列的總結我有餘額(也有在對象的其他屬性,但不導入例如)對象的列表:角2管 - 計算對象

[{ balance : 100 },{ balance : 200 },{ balance : null },{ balance : 300 }] 

我找的智能管道,將總結(其他平均值)的餘額(不希望使用for循環 - 但一些ES6功能像減少但不知道如何)

回答

11

您將需要編寫自己的管道,下面應該給你後面的內容。這需要你想總結作爲參數

總和

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> 

平均

對於平均管道,只需使用與總管道相似的邏輯即可。這將null視爲0.

transform(items: any, attr: string): any { 
    let sum = items.reduce((a, b) => a + b[attr], 0); 
    return sum/items.length; 
} 
+0

您的代碼將返回'NaN'。 –

+0

你確定,適合我 –

+0

是的,它現在有效。:) –