У мене є щось подібне:
$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;
}
Легко, коли це лише один масив, але у мене є інші масиви з іншою назвою властивості, які я хотів би підбити.
Я був би щасливішим, якби я міг зробити щось подібне:
$scope.traveler.Sum({ Amount });
Але я не знаю, як це пережити таким чином, щоб я міг його повторно використовувати в майбутньому так:
$scope.someArray.Sum({ someProperty });
Відповідь
Я вирішив використовувати пропозицію @ gruff-bunny, тому уникаю прототипування власного об'єкта (масив)
Я щойно зробив невелику модифікацію його відповіді, що перевіряє масив і значення для підсумовування не є нульовим, це моя остаточна реалізація:
$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);
};