En subrayado , la función _reduce () se usa para transformar una matriz o las propiedades de un objeto en un solo valor. La firma de la función de reducción es _.reduce (lista, iterar, [memo], [contexto]) . Podemos ver que tanto la nota como el contexto son parámetros opcionales. Si el parámetro memo no se proporciona durante la ejecución de la función, entonces es el primer elemento de matriz o propiedad de objeto que se utiliza para el valor inicial. La función de reducción hace uso de un concepto llamado memorización. Es una forma elegante de decir que recuerda valores. Abordaremos este concepto en los siguientes ejemplos de reduce()Vamos a ver.



Ejemplo 1 de reducción de matriz de enteros

La _reduce()función se utiliza para crear un único resultado a partir de una lista de valores determinada. En el ejemplo 1, tenemos una lista de valores enteros simples contenidos en la valuesmatriz. Podemos ver que en la llamada a la _reduce()función, pasamos la matriz de valores para operar y una función iterativa anónima. Podemos ver que esta función iteratee en sí misma acepta un memoizer y un número para que funcione, es mágico. La función iteratee hace uso de la memorización, o en otras palabras, recuerda el valor de retorno cada vez que calcula un valor . La primera iteración se ejecuta como lo haría normalmente, sin embargo, cada iteración posterior utiliza el valor de retorno de la iteración anterior.para el cálculo. Si ejecuta el código, puede ver claramente cómo funciona. Entonces, cuando las cosas comienzan a ejecutarse, el primer valor que se coloca en el memoizerargumento mediante reduce es el primer valor dentro de la matriz. Entonces dice Calculating 1 + 2 y eso regresa 3Entonces, 3se coloca en memoizer y, por lo tanto, la próxima vez que se ejecute, este valor recordado se utilizará como primer argumento. La segunda iteración es el cálculo de 3 + 3 . El tercero es calcular 6 + 4 y así sucesivamente. Por lo tanto, la memorización de reduce le permite realizar un seguimiento de los últimos resultados, que luego se devuelven a la función. En este ejemplo particular, es el total acumulado, lo que facilita sumar los valores contenidos en la matriz.

Hacer clic Claro


Reducir la matriz de objetos con el valor inicial Ejemplo 2

Además de pasar el primer valor de la matriz como primer parámetro, también puede establecer el valor inicial explícitamente. El ejemplo dos de la función _reduce () nos muestra cómo funciona. En este caso, vamos a ir a pescar y necesitamos algunos suministros. La propiedad de suministros contiene una serie de objetos que necesitamos para un buen viaje. Necesitaremos una caña de pescar, una licencia para pescar, gasolina para el barco y algunos señuelos nuevos para la buena suerte. Usamos _reduce()pasando data.suppliescomo primer argumento, la función de iterador como el segundo y un valor entero de 0como el tercero. Esto obliga al memoizer a comenzar en 0, lo cual es importante en este caso de usar una matriz de objetos. Esto lo convierte en una primera iteración de0 + 49 = 49y luego cada iteración se alimenta con el resultado de la iteración anterior como en el primer ejemplo. Adelante, ejecuta el código para ver cuánto nos costará ir a pescar.

Hacer clic Claro


Reducir la matriz de objetos con objeto anónimo Ejemplo 3

En este tercer ejemplo de la función de reducción en Underscore, utilizamos un objeto anónimo . En este ejemplo, llegaremos a las pistas en lugar de a los lagos. La estructura de datos es similar, pero en lugar de suministros de pesca, tenemos suministros para ir a esquiar. La llamada a también _reduce()es similar. Lo que es diferente es cómo configuramos la returndeclaración. En lugar de devolver un solo valor, devolvemos un objeto que tiene una clave de pricey un valor de memoizer.price + value.priceAl igual que en el ejemplo anterior, se calcula un recuento actual de los precios dentro de la matriz. Para ver el resultado final, simplemente podemos acceder total.price, que es exactamente lo que hacemos al cerrar la sesión de los datos.

Hacer clic Claro


3 ejemplos del resumen de la función de reducción de subrayado

Esperamos que haya disfrutado de estos diferentes ejemplos de la función _reduce () en Underscore JS. En general, podemos ver que el concepto de _reduce () es tomar una lista de valores y reducir esa lista a un solo valor, que es exactamente lo que hicimos aquí en este tutorial.