私はこのようなものを持っています:
$scope.traveler = [
{ description: 'Senior', Amount: 50},
{ description: 'Senior', Amount: 50},
{ description: 'Adult', Amount: 75},
{ description: 'Child', Amount: 35},
{ description: 'Infant', Amount: 25 },
];
この配列の合計量を取得するには、次のようにします。
$scope.totalAmount = function(){
var total = 0;
for (var i = 0; i < $scope.traveler.length; i++) {
total = total + $scope.traveler[i].Amount;
}
return total;
}
配列が1つだけの場合は簡単ですが、合計したいプロパティ名が異なる他の配列があります。
次のようなことができれば幸いです。
$scope.traveler.Sum({ Amount });
しかし、私はこれを次のように将来的に再利用できるようにする方法を知りません:
$scope.someArray.Sum({ someProperty });
回答
@ gruff-bunnyの提案を使用することにしたので、ネイティブオブジェクト(配列)のプロトタイピングは避けました
配列を検証する彼の回答に少し変更を加えただけで、合計する値がnullではありません。これが私の最終的な実装です。
$scope.sum = function (items, prop) {
if (items == null) {
return 0;
}
return items.reduce(function (a, b) {
return b[prop] == null ? a : a + b[prop];
}, 0);
};