我有这样的事情:
$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建议,因此避免原型原型本机对象(数组)
我只是对他的答案做了一些修改,以验证数组,并且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);
};