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

112
Vistas
If-statement ejecuta todo menos return-statement

Estoy tratando de entender cómo funcionan las pilas a través del código. Ahora, traté de escribir un programa simple de coincidencia de corchetes: escribí la implementación de la lista vinculada y la usé para implementar la pila en JS. La idea es iterar a través de todos los caracteres de la cadena y colocar corchetes abiertos en la pila. Después de esto, si no hay un paréntesis que coincida con el paréntesis superior, la función debería devolver falso. El problema principal es que la declaración if ejecuta todo menos la declaración de retorno.

Entrada: ([(a()]])

Salida deseada: false

 function isBalanced(string) { let stack = new Stack(); [...string].forEach(char => { let bracket if (char === '[' || char === '(') { stack.push(char) } else { if (stack.isEmpty()) { return false } bracket = stack.pop().data console.log(`PAIR: ${bracket}${char}`) if (!(bracket === "[" && char === "]") && !(bracket === "(" && char === ")")) { console.log("working") return false } }}); return stack.isEmpty(); } let string = '([(a()]])' console.log(isBalanced(string))

He usado console.log() para verificar si mi declaración funciona y en qué pares funciona.

La salida en la consola se ve así:

 PAIR: (a working PAIR: () PAIR: [] PAIR: (] working true

Como puede ver, cuando la declaración es verdadera, definitivamente funciona, pero no llama a la declaración de retorno interna (después de la primera salida 'working' , no debería haber más pares en la consola; simplemente false ). ¿Dónde está el problema?

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

0

Puede usar Array#every junto con la verificación de longitud de la pila y regresar dentro de la devolución de llamada para cada carácter correcto true .

 function isBalanced(string) { const closed = { '(': ')', '[': ']' }, stack = []; return [...string].every(char => { if (char === '[' || char === '(') { stack.push(char); return true; } if (!stack.length) return false; const bracket = stack.pop(); console.log(`PAIR: ${bracket}${char}`); return closed[bracket] === char; }) && !stack.length; } console.log(isBalanced('(([()]))')); console.log(isBalanced('([(a()]])'));
 .as-console-wrapper { max-height: 100% !important; top: 0; }

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