DEV Community

Cristian Fernando
Cristian Fernando

Posted on

Paracetamol.js💊| #195: Explica este código JavaScript

Explica este código JavaScript

Dificultad: Intermedio

const getCouter = (arr = []) => {
  return arr.reduce((acum, item) => {
    const counter = acum[item] ?? 0;
    return {
      ...acum,
      [item]: counter + 1
    }
  }, {})
} 

console.log(getCouter(["Juan", "Cris", "Juan", "Pedro"]))
Enter fullscreen mode Exit fullscreen mode

A. { "Cris":1, "Juan":1, "Pedro":1 }
B. { "Cris":1, "Juan":2, "Pedro":1 }
C. {}
D. Ninguno de los anteriores

Respuesta en el primer comentario.


Respuesta:
B. { "Cris":1, "Juan":2, "Pedro":1 }

La función getCounter recibe un arreglo y regresa un objeto contabilizando cuantas veces se repite cada item de dicho arreglo.

El método reduce es excelente para este caso de uso:

iteración acum item counter
1ra {} "Juan" 0
2da {"Juan":1} "Cris" 0
3ra {"Juan":1, "Cris":1} "Juan" 1
4ta {"Juan":2, "Cris":1} "Pedro" 0
5ta {"Juan":2, "Cris":1, "Pedro":1} - -

Algunos aspectos interesantes que mencionar:

  • Nota como se aprovecha el operador ?? ya que cuando haya un nuevo nombre que evaluar en el arreglo, entonces siempre counter valdrá 0 ya que evalua como undefined.

  • Para no perder los datos de pasadas iteraciones usamos spread operator.

Top comments (4)

Collapse
 
pterpmnta profile image
Pedro Pimienta M. •

Muy buenos tus explicaciones.

Collapse
 
duxtech profile image
Cristian Fernando •

muchas gracias por tu comentario

Collapse
 
taneros profile image
Renatik • • Edited

el año pasado hice todos los ejercicios de Paracetamol.JS, y que bueno las sigas publicando este año

Collapse
 
duxtech profile image
Cristian Fernando •

Gracias por tu comentario! Este año tengo pensando hacer un Paracetalmol.ts...