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
 
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...

Collapse
 
pterpmnta profile image
Pedro Pimienta M.

Muy buenos tus explicaciones.

Collapse
 
duxtech profile image
Cristian Fernando

muchas gracias por tu comentario