JavaScript에서 reduce() 방법을 사용하십시오.
14651 단어 webdevspanishjavascript
reduce()
es un método bastante 특유, ampliamente usado pero al mismo tiempo incomprendido por las comunidades de desarrollo. Junto con map()
Y filter()
Completan lo que me gusta deminar como la Trinidad de los métodos JavaScript.En este pequeño post trataré de resumir y explicar las principales características del método
reduce()
실용주의.Al igual que
map()
Y filter()
, reduce()
itera sobre un arreglo dado.Sintaxis
array.reduce( (acc, item, index, arr)=>{
//cuerpo de la funcion
}, inicilizador del acumulador)
reduce()
4개의 매개변수에 대한 콜백 수신:acc: 변수 acumuladora donde se almacenarán valores parciales en cada iteración del arreglo.
항목: elemento actual del arreglo que se itera.
인덱스: posición del elemento anterior mencionando.
arr: arreglo como tal, sobre el cual se trabaja.
En la práctica, casi para cualquier cao se uso se acostumbra solo usar la variable
acc
eitem
, por lo que una sintaxis más resumida se vería de la siguiente manera:array.reduce( (acc, item)=>{
//cuerpo de la funcion
}, inicilizador del acumulador)
El inicializador del acumulador se explicará a detalle con los ejemplos practicos.
reduce()의 특성
reduce()
감소(valga la redundancia) el arreglo a un solo valor, en otras palabras, devolverá un solo valor. acc
). Basta de conceptos teóricos, ahora anicemos ejemplos prácticos:
Imaginemos que tenemos un array de números y deseamos sumar todos sus valores, podríamos usar
reduce()
de la siguiente manera:let numeros =[2,9,7,16,3,78];
let suma = numeros.reduce((acc,numero) => acc + numero);
console.log(suma);
//salida: 115
자세한 설명은 다음과 같습니다.
Al no usar un valor de inicialización,
acc = 2
, por ser el primer elemento de nuestro arreglo.La iteración del arreglo, por ende, comenzará desde el index 1, osea, el número 9:
numero = 9
다음은 프로그램에 대한 설명입니다:반복
acc
숫자
acc + 숫자
1ra 반복
2
9
11
2일 반복
11
7
18
3차 반복
18
16
34
4회 반복
34
삼
37
5초 반복
37
78
115
Analizando iteración a iteración se comprende mucho mejor de donde sale el resultado final.
Veamos otro 예:
Imaginemos que tenemos un arreglo de objetos que contienen pedidos de comida, entonces el chef nos pide que le indiquemos cuantos son los pedidos cuyo plato principal sea "sajta", ¿cómo podríamos hacer esto con
reduce()
? El arreglo de objetos es el siguiente:let pedidos = [
{entrada:'ensalada de pepinos', principal: 'sajta', postre: "platano"},
{entrada:'ensalada de tomates', principal: 'silpancho', postre: "helado"},
{entrada:'ensalada simple', principal: 'sajta', postre: "yogurt"},
{entrada:'ensalada simple', principal: 'anticucho', postre: "yogurt"},
{entrada:'ensalada de tomates', principal: 'sajta', postre: null}
];
La sajta es un plato típico boliviano elaborado en base a pollo, ají, papas, y salsa
가능한 해결책은 다음과 같습니다.
let cantidadSajta = pedidos.reduce((contador,pedido)=>{
if(pedido.principal === "sajta")
return contador+1;
else
return contador;
},0)
console.log(cantidadSajta); //salida: 3
Podemos observar que en este ejemplo si escribimos una inicialización para la variable contador que es 0, (
contador = 0
). Esto hace que el iterador recorra el arreglo desde el índice 0 y no desde el índice 1 como vimos en el anterior ejemplo.Encontrar el 미니모 오 맥시모
Los métodos
min()
Y max()
de Math usadas con reduce()
facilitan encontrar el mínimo y máximo en un arreglo de números:let numeros =[8,3,7,9,4,0];
const max = numeros.reduce((acc,numero) => Math.max(acc,numero))
console.log(max); //salida: 9
let numeros =[8,3,7,9,4,0];
const min = numeros.reduce((acc,numero) => Math.min(acc,numero))
console.log(min); //salida: 0
Trabajar con arreglos anidados
Imaginemos que contamos con un arreglo anidado y necesitamos convertirlo en un arreglo plano.
let numeros =[1,2,[3,4,5],6,7,[8],[9,10]];
const planos = numeros.reduce((acc,item) =>{
return acc.concat(item)
},[]);
console.log(planos);
//salida: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
결론
reduce()
itera y compara cada elemento de un arreglo, aplicando un callback y devolviendo un solo valor. acc
eitem
. 참조
Reference
이 문제에 관하여(JavaScript에서 reduce() 방법을 사용하십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/duxtech/las-bondades-del-metodo-reduce-en-javascript-516o텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)