我有这样的事情:
$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 });
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
由于将函数添加到Array原型的所有弊端,我正在更新此答案以提供使语法与问题中最初要求的语法相似的替代方法。
class TravellerCollection extends Array { sum(key) { return this.reduce((a, b) => a + (b[key] || 0), 0); } } const traveler = new TravellerCollection(...[ { description: 'Senior', Amount: 50}, { description: 'Senior', Amount: 50}, { description: 'Adult', Amount: 75}, { description: 'Child', Amount: 35}, { description: 'Infant', Amount: 25 }, ]);
console.log(traveler.sum('Amount')); //~> 235
问题来源于stack overflow