En el desarrollo web moderno, la manipulación de datos es crucial para garantizar aplicaciones fluidas y receptivas. Ya sea que esté filtrando productos, buscando artículos específicos o transformando datos para mostrarlos, la manipulación efectiva de datos garantiza que su aplicación se ejecute sin problemas y brinde una excelente experiencia de usuario.
JavaScript proporciona varios métodos integrados como buscar, mapear y filtrar para tareas comunes. Sin embargo, el versátil método de reducción destaca por su capacidad para realizar todas estas operaciones y más. Con reducir, puede acumular valores, transformar matrices, aplanar estructuras anidadas y crear transformaciones de datos complejas de manera concisa.
Si bien reduce puede replicar otros métodos de matriz, puede que no siempre sea la opción más eficiente para tareas simples. Los métodos como el mapa y el filtro están optimizados para propósitos específicos y pueden ser más rápidos para operaciones sencillas. Sin embargo, comprender cómo utilizar reduce puede ayudarle a encontrar muchas formas de mejorar su código y hacerlo más fácil de entender.
En este artículo, profundizaremos en el método de reducción, exploraremos varios casos de uso y discutiremos las mejores prácticas para maximizar su potencial.
Resumen del artículo
Comprensión del método de reducción
JavaScript reduce la sintaxis
Ejemplo de reducción de JavaScript
Varios casos de uso del método reducir
Sustituyendo mapas, filtros y búsquedas de JavaScript con reducción
conclusión
El método de reducción de JavaScript aplica una función contra un acumulador y cada elemento de la matriz (de izquierda a derecha) para reducirlo a un solo valor. Este valor único podría ser una cadena, un número, un objeto o una matriz.
Básicamente, el método reduce toma una matriz y la condensa en un valor aplicando repetidamente una función que combina el resultado acumulado con el elemento de la matriz actual.
array.reduce(callback(accumulator, currentValue, index, array), initialValue);
Parámetros:
devolución de llamada: la función a ejecutar en cada elemento, que toma los siguientes argumentos:
acumulador: el valor acumulado devuelto previamente en la última invocación de la devolución de llamada, o valor inicial, si se proporciona.
currentValue: El elemento actual que se está procesando en la matriz.
índice (opcional): el índice del elemento actual que se está procesando en la matriz.
matriz (opcional): se invocó la reducción de matriz.
initialValue: un valor para usar como primer argumento para la primera llamada de la devolución de llamada. Si no se proporciona un valor inicial, el primer elemento (matriz [0]) de la matriz se utilizará como valor acumulador inicial y la devolución de llamada no se ejecutará en el primer elemento.
Aquí hay un ejemplo básico de cómo se puede utilizar el método de reducción de JavaScript
const numbers = [1, 2, 3, 4]; const sum = numbers.reduce((acc, curr) => acc curr, 0); console.log(sum); // Output: 10
En este ejemplo, reducir agrega cada número de la matriz al acumulador (acc). Comenzando con un valor inicial de 0, se procesa de la siguiente manera:
(0 1) -> 1
(1 2) -> 3
(3 3) -> 6
(6 4) -> 10
El método de reducción es muy versátil y se puede aplicar a una amplia gama de escenarios. A continuación se muestran algunos casos de uso comunes con explicaciones y fragmentos de código.
Supongamos que tiene una serie de objetos y desea resumir una propiedad en particular.
const products = [ { name: 'Laptop', price: 1000 }, { name: 'Phone', price: 500 }, { name: 'Tablet', price: 750 } ]; const totalPrice = products.reduce((acc, curr) => acc curr.price, 0); console.log(totalPrice); // Output: 2250
En este ejemplo, reduzca las iteraciones sobre cada objeto de producto, agregando la propiedad de precio al acumulador (acc), que comienza en 0.
Puedes usar reduce para transformar una matriz en un objeto. Esto puede resultar útil cuando desea agrupar una matriz usando su propiedad
const items = [ { name: 'Apple', category: 'Fruit' }, { name: 'Carrot', category: 'Vegetable' }, { name: 'Banana', category: 'Fruit' } ]; const groupedItems = items.reduce((acc, curr) => { if (!acc[curr.category]) { acc[curr.category] = []; } acc[curr.category].push(curr.name); return acc; }, {}); console.log(groupedItems); // Output: { Fruit: ['Apple', 'Banana'], Vegetable: ['Carrot'] }
Este ejemplo agrupa elementos por categoría. Para cada artículo, verifica si la categoría ya existe en el acumulador (acc). De lo contrario, inicializa una matriz para esa categoría y luego agrega el nombre del elemento a la matriz.
El método de reducción puede aplanar una matriz de matrices en una sola matriz como se muestra a continuación
const nestedArrays = [[1, 2], [3, 4], [5, 6]]; const flatArray = nestedArrays.reduce((acc, curr) => acc.concat(curr), []); console.log(flatArray); // Output: [1, 2, 3, 4, 5, 6]
Aquí, reduce concatena cada matriz anidada (curr) al acumulador (acc), que comienza como una matriz vacía.
El método de reducción también se puede utilizar para eliminar duplicados de una matriz
const numbers = [1, 2, 2, 3, 4, 4, 5]; const uniqueNumbers = numbers.reduce((acc, curr) => { if (!acc.includes(curr)) { acc.push(curr); } return acc; }, []); console.log(uniqueNumbers); // Output: [1, 2, 3, 4, 5]
El método de reducción es increíblemente versátil y puede replicar la funcionalidad de otros métodos de matriz como mapear, filtrar y buscar. Si bien puede que no siempre sea la opción con mayor rendimiento, es útil comprender cómo se puede utilizar reduce en estos escenarios. A continuación se muestran ejemplos que muestran cómo reduce puede reemplazar estos métodos.
El método map crea una nueva matriz aplicando una función a cada elemento de la matriz original. Esto se puede replicar con reduce.
const numbers = [1, 2, 3, 4]; const doubled = numbers.reduce((acc, curr) => { acc.push(curr * 2); return acc; }, []); console.log(doubled); // Output: [2, 4, 6, 8]
En este ejemplo, reduce las iteraciones sobre cada número, lo duplica y envía el resultado a la matriz del acumulador (acc).
El método de filtro crea una nueva matriz con elementos que pasan una prueba implementada por una función proporcionada. Esto también se puede lograr con reduce.
const numbers = [1, 2, 3, 4, 5, 6]; const evens = numbers.reduce((acc, curr) => { if (curr % 2 === 0) { acc.push(curr); } return acc; }, []); console.log(evens); // Output: [2, 4, 6]
Aquí, reduzca las comprobaciones si el número actual (curr) es par. Si es así, el número se agrega a la matriz del acumulador (acc).
El método de búsqueda devuelve el primer elemento de una matriz que satisface una función de prueba proporcionada. reduce también se puede utilizar para este propósito. Esto puede resultar útil a la hora de encontrar el primer número par de una matriz
const numbers = [1, 3, 5, 6, 7, 8]; const firstEven = numbers.reduce((acc, curr) => { if (acc !== undefined) return acc; return curr % 2 === 0 ? curr : undefined; }, undefined); console.log(firstEven); // Output: 6
El método de reducción en JavaScript es una herramienta versátil que puede manejar una amplia gama de tareas de manipulación de datos, superando las capacidades de mapear, filtrar y buscar. Si bien puede que no siempre sea lo más eficiente para tareas simples, dominar la reducción abre nuevas posibilidades para optimizar y simplificar su código. Comprender y utilizar reduce de manera eficaz puede mejorar en gran medida su capacidad para gestionar transformaciones de datos complejas, convirtiéndolo en una parte crucial de su conjunto de herramientas de JavaScript.
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