Расширенное суммирование массивов в AngularJS
В AngularJS суммирование свойств массива может быть обычной задачей. Базовый подход предполагает перебор массива и накопление значений свойств. Однако этот метод становится утомительным, когда приходится сталкиваться с несколькими массивами и разными именами свойств.
Для решения этой проблемы требуется более гибкое и многократно используемое решение, которое позволяет удобно суммировать любое свойство массива. Этого можно добиться с помощью метода сокращения(), который предоставляет мощный способ агрегирования значений массива.
Рассмотрим следующий пример:
$scope.traveler = [ { description: 'Senior', Amount: 50}, { description: 'Senior', Amount: 50}, { description: 'Adult', Amount: 75}, { description: 'Child', Amount: 35}, { description: 'Infant', Amount: 25 }, ];
Чтобы суммировать свойство «Amount» массива путешественников с помощью функции уменьшения(), мы можем написать метод следующим образом:
$scope.sum = function(items, prop){ return items.reduce( function(a, b){ return a b[prop]; }, 0); };
В этом методе мы используем метод уменьшить() с функцией обратного вызова, которая принимает два аргумента: накопленное значение (a) и текущий элемент (b) массива. В обратном вызове мы получаем доступ к свойству, которое хотим суммировать (prop), и добавляем его к накопленному значению.
Чтобы применить этот метод к нашему массиву путешественников, мы можем сделать следующее:
$scope.travelerTotal = $scope.sum($scope.traveler, 'Amount');
Используя этот подход, мы можем легко суммировать значения свойств любого массива в нашем Приложение AngularJS. Определив метод многократного использования, мы избегаем избыточного кода и обеспечиваем согласованность наших вычислений суммирования.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3