আমার এরকম কিছু রয়েছে:
$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 });
উত্তর
আমি @ গ্রুফ-বানির পরামর্শটি ব্যবহার করার সিদ্ধান্ত নিয়েছি, তাই আমি নেটিভ অবজেক্ট (অ্যারে) প্রোটোটাইপিং এড়াতে চাই
আমি অ্যারের বৈধতা দিয়ে তার উত্তরে সামান্য পরিবর্তন করেছি এবং যোগফলের মানটি শূন্য নয়, এটি আমার চূড়ান্ত বাস্তবায়ন:
$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);
};