나는 이와 같은 것을 가지고있다 :
$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 제안을 사용하기로 결정 했으므로 원시 객체 (배열)의 프로토 타이핑을 피하십시오
방금 배열의 유효성을 검사하는 그의 답변을 약간 수정했으며 합계 값이 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);
};