Melhor maneira de somar um valor de propriedade em uma matriz

Eu tenho algo parecido com isto:

$scope.traveler = [
            {  description: 'Senior', Amount: 50},
            {  description: 'Senior', Amount: 50},
            {  description: 'Adult', Amount: 75},
            {  description: 'Child', Amount: 35},
            {  description: 'Infant', Amount: 25 },
];

Agora, para ter uma quantidade total dessa matriz, estou fazendo algo assim:

$scope.totalAmount = function(){
       var total = 0;
       for (var i = 0; i < $scope.traveler.length; i++) {
              total = total + $scope.traveler[i].Amount;
            }
       return total;
}

É fácil quando existe apenas uma matriz, mas tenho outras matrizes com um nome de propriedade diferente que gostaria de somar.

Eu ficaria mais feliz se eu pudesse fazer algo assim:

$scope.traveler.Sum({ Amount });

Mas não sei como passar por isso de uma maneira que possa reutilizá-lo no futuro assim:

$scope.someArray.Sum({ someProperty });

Responda

Eu decidi usar @ sugestão de coelho-rabugento, então euevitar a criação de protótipos de objetos nativos (Matriz)

Eu apenas fiz uma pequena modificação na resposta dele validando a matriz e o valor a somar não é nulo, esta é minha implementação final:

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

questionAnswers(9)

yourAnswerToTheQuestion