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"]))
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 siemprecounter
valdr谩0
ya que evalua comoundefined
.Para no perder los datos de pasadas iteraciones usamos spread operator.