Лучший способ суммировать значение свойства в массиве

У меня есть что-то вроде этого:

$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, поэтому яизбегайте прототипирования нативного объекта (Array)

Я только что сделал небольшую модификацию его ответа, проверяя массив и значение sum не равно 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);
};

Ответы на вопрос(9)

Ваш ответ на вопрос