Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

174
Vistas
¿La matriz aparentemente está cambiando al ordenar?

Estoy escribiendo una función para encontrar las 10 palabras más comunes en una cadena. Sin embargo, cuando voy a ordenar mi arr, repite algunas de las palabras para sus valores de conteo.

 paragraph = `I love teaching. If you do not love teaching what else can you love. I love Python if you do not love something which can give you all the capabilities to develop an application what else can you love.`; const tenMostFrequentWords = (str) => { const regex = /\b[az]+\b/gi; const arr = str.match(regex); const set = new Set(); for (word of arr) { const filteredArr = arr.filter(item => item == word); set.add({word: word, count: filteredArr.length}); } const newArr = Array.from(set); newArr.sort((a,b) => b.count - a.count); return newArr; } console.log(tenMostFrequentWords(paragraph));

¿Por qué está pasando esto?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Está agregando nuevos objetos al conjunto en cada iteración de su bucle. Un Set los comparará por referencia (identidad del objeto), no por igualdad estructural , por lo que está agregando cada palabra varias veces. En su lugar, use un Map para los conteos por palabra (y no use filter para contar, eso equivale a una complejidad cuadrática):

 const tenMostFrequentWords = (str) => { const regex = /\b[az]+\b/gi; const words = str.match(regex); const counts = new Map(); for (word of words) { counts.set(word, (counts.get(word) ?? 0) + 1); } const newArr = Array.from(counts, ([word, count]) => ({word, count})); newArr.sort((a,b) => b.count - a.count); return newArr.slice(0, 10); } const paragraph = `I love teaching. If you do not love teaching what else can you love. I love Python if you do not love something which can give you all the capabilities to develop an application what else can you love.`; console.log(tenMostFrequentWords(paragraph));

about 4 years ago · Juan Pablo Isaza Denunciar

0

Recorre arr y la palabra "amor" está en arr 6 veces, por lo que la agregará al conjunto 6 veces. Cree otro "arr" y cada vez que itere verifique si la palabra ya ha sido iterada.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda