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