reduce y la creación de indexadores (español)

reduce es una función que todo debemos a aprender a utilizar porque nos sacara de muchos problemas en la vida cotidiana cuando estemos trabajando .

reduce reduce , es una función de iteración para arreglos , que no modifica el arreglo original , de manera simplificada reduce trabaja de la siguiente manera

[].reduce((acumulador, item)=>nuevo_acumulador)

como puede observar reduce trabaja con un objeto llamado acumulador , donde podremos ir almacenado algún dato de interés mientras recorremos el arreglo, importante destacar es que nuestro valor de retorno será el nuevo acumulador

reduce una mirada un poco mas compleja de reduce , seria de la siguiente manera

[].reduce((acumulador, item)=>acumulador + item, valor_inicial_acumulador)

algunas de las cosas que podríamos realizar con reduce , seria realizar la suma de todos los elementos de un arreglo de muneros

const edades =[1,2,3,4]
const suma = edades.reduce((acumulador, item)=> acumulador + item,0)
console.log(`La suma es ${suma}`)

obteniendo de resultado lo siguiente image.png

todo lo anterior esta muy bien , pero la verdadera magia de reduce , es cuando estamos trabajando con alguna base de datos con muchos registros y estos no están indexados pero los almacenados en un arreglo , lo normar cuando deseamos buscar un elementos es que utilicemos la función find , pero notara que entres mas dado el rendimiento disminuye, una solución podría ser la indexación de datos

indexación de datos con reduce

const personas =[
  {dui:"001", nombre:"oscar",apellido :"cruz"},     
  {dui:"002", nombre:"carlos",apellido :"cruz"},
  {dui:"003", nombre:"elsy",apellido :"cruz"},
  ]

const indexPersonas=personas.reduce((acumulador,item)=>({...acumulador,[item.dui]:item}),{})

console.log(indexPersonas["001"])

image.png