Así que digamos que tengo una serie de cadenas de nombres de países, es decir
const array = ["usa", "spain", "canada", "usa", "usa", "spain"]
¿Cómo haría para recorrer esa matriz y generar una lista que incremente los elementos más populares en esa matriz y enumere solo los 3 principales, por ejemplo?
Para un contexto más amplio, el caso de uso real es con cientos de elementos de matriz con docenas o incluso cientos de países diferentes.
Sé que puedo recorrer la matriz y crear una nueva matriz e incrementar cada vez que una cadena en particular se repite nuevamente, pero tenía curiosidad por saber si alguien tiene un enfoque más limpio y más universal.
Salida deseada:
usa: 3 spain: 2 canada: 1Gracias por tu tiempo.
Puedes hacer uso de Array.reduce :
const array = ["usa", "spain", "canada", "usa", "usa", "spain"] const obj = array.reduce((a, b) => { return a[b] = array.filter(e => e == b).length, a }, {}) console.log(obj);Esto no es muy bonito, pero creo que es el fragmento más parecido a js que puedo proporcionarte
const array = ["usa", "spain", "canada", "usa", "usa", "spain"] const result = array.reduce((acc, cur) => {acc[cur] = (acc[cur] ?? 0) + 1; return acc}, {}) console.log(result)¡Seguramente esto se puede hacer de una mejor manera!
Solución simple pero más intuitiva.
const arr = ["usa", "spain", "canada", "usa", "usa", "spain"]; let results = {}; for (let country of arr) { results[country] = (results[country] || 0) + 1; } console.log(results);