मेरे पास कुछ इस तरह है:
$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) को प्रोटोटाइप करने से बचता हूं
मैंने सिर्फ उनके जवाब में थोड़ा संशोधन किया और सरणी को मान्य किया और योग करने का मूल्य शून्य नहीं है, यह मेरा अंतिम कार्यान्वयन है:
$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);
};