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

157
Vistas
Falló la asignación de copia de semiespacio, el montón de JavaScript se quedó sin memoria

Me preguntaba por qué el siguiente código devuelve un error de asignación de memoria.

 var countValidWords = function(sentence) { let words = []; for(let i = 0; i < sentence.length; ++i){ let word = ''; while(sentence[i] !== ' '){ word += sentence[i]; ++i; } if(word !== '') words.push(word); } console.log(words); };

Simplemente estoy tratando de construir una matriz de palabras a partir de la oración ingresada (las palabras pueden estar separadas por más de un espacio).

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

0

Si la oración no termina con un espacio, el ciclo while nunca termina porque no verifica si ha pasado el final de la cadena. Como resultado, ingresa en un ciclo infinito que agrega undefined a word , hasta que se queda sin memoria.

Agregue una verificación de que i está dentro de la longitud de la cadena allí.

 var countValidWords = function(sentence) { let words = []; for(let i = 0; i < sentence.length; ++i){ let word = ''; while(i < sentence.length && sentence[i] !== ' '){ word += sentence[i]; ++i; } if(word !== '') words.push(word); } console.log(words); };

about 4 years ago · Juan Pablo Isaza Denunciar

0

La cláusula while debe verificar si i salgo de los límites:

 while(i < sentence.length && sentence[i] !== ' ')
about 4 years ago · Juan Pablo Isaza Denunciar

0

¿Qué tal esto? No es la versión más optimizada que puedas encontrar, pero funciona. Tenías un bucle infinito en el tiempo.

 var countValidWords = function(sentence) { let words = []; let word = '' for(let i = 0; i < sentence.length; ++i){ if(sentence[i] != '' && sentence[i] != ' '){ word += sentence[i]; } if(sentence[i] == ' ' || sentence[i + 1] === undefined){ words.push(word); word = ''; } } console.log(words); };
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