Suma de matrices avanzada en AngularJS
En AngularJS, sumar propiedades de matrices puede ser una tarea común. Un enfoque básico implica iterar a través de la matriz y acumular los valores de las propiedades. Sin embargo, este método se vuelve tedioso cuando se enfrenta a múltiples matrices y diferentes nombres de propiedades.
Para abordar esto, se desea una solución más flexible y reutilizable, una que permita una suma conveniente de cualquier propiedad de la matriz. Esto se puede lograr usando el método reduce(), que proporciona una manera poderosa de agregar valores de matriz.
Considere el siguiente ejemplo:
$scope.traveler = [ { description: 'Senior', Amount: 50}, { description: 'Senior', Amount: 50}, { description: 'Adult', Amount: 75}, { description: 'Child', Amount: 35}, { description: 'Infant', Amount: 25 }, ];
Para sumar la propiedad 'Cantidad' de la matriz de viajero usando reduce(), podemos escribir un método de la siguiente manera:
$scope.sum = function(items, prop){ return items.reduce( function(a, b){ return a b[prop]; }, 0); };
En este método, usamos el método reduce() con una función de devolución de llamada que acepta dos argumentos: el valor acumulado (a) y el elemento actual (b) de la matriz. Dentro del callback, accedemos a la propiedad que queremos sumar (prop) y la sumamos al valor acumulado.
Para aplicar este método a nuestro conjunto de viajeros, podemos hacer lo siguiente:
$scope.travelerTotal = $scope.sum($scope.traveler, 'Amount');
Con este enfoque, podemos sumar fácilmente los valores de propiedad de cualquier matriz en nuestra aplicación AngularJS. Al definir un método reutilizable, evitamos código redundante y garantizamos la coherencia en nuestros cálculos de suma.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3