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

248
Vistas
El final de mi bucle for no se ejecuta en mi función javascript

Estoy tratando de recrear la función indexOf en JavaScript. No puedo hacer que funcione la parte de retorno -1, pero las otras partes funcionan bien. Parece que el final de mi ciclo for no se está ejecutando, ya que intento imprimir "fin de ciclo". También tengo un código de prueba y los resultados a continuación. Cualquier ayuda sería apreciada.

 Array.prototype.myIndexOf = function(...args) { if(args[1] === undefined){ for(let i = 0; i < this.length; i++){ if(this[i] === args[0]){ return i; } } } else { for(let i = args[1]; i < this.length; i++){ if(this[i] === args[0]){ return i; } } console.log("end of loop") return -1; } }; // TEST const beasts = ['ant', 'bison', 'camel', 'duck', 'bison']; console.log(beasts.indexOf('bison')); console.log(beasts.myIndexOf('bison')); // expected output: 1 // start from index 2 console.log(beasts.indexOf('bison', 2)); console.log(beasts.myIndexOf('bison', 2)); // expected output: 4 console.log(beasts.indexOf('giraffe')); console.log(beasts.myIndexOf('giraffe')); // expected output: -1
 1 1 4 4 -1 undefined
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Estás cerca. Mover el return -1; instrucción fuera de los bloques if/else . Tal como está escrito actualmente, solo recibirá el -1 si no encuentra una coincidencia y pasó dos argumentos.

 Array.prototype.myIndexOf = function(...args) { if(args[1] === undefined){ for(let i = 0; i < this.length; i++){ if(this[i] === args[0]){ return i; } } } else { for(let i = args[1]; i < this.length; i++){ if(this[i] === args[0]){ return i; } } } return -1; }; // TEST const beasts = ['ant', 'bison', 'camel', 'duck', 'bison']; console.log(beasts.indexOf('bison')); console.log(beasts.myIndexOf('bison')); // expected output: 1 // start from index 2 console.log(beasts.indexOf('bison', 2)); console.log(beasts.myIndexOf('bison', 2)); // expected output: 4 console.log(beasts.indexOf('giraffe')); console.log(beasts.myIndexOf('giraffe')); // expected output: -1

Con este cambio, siempre presionarás return -1; si no hay ninguna coincidencia independientemente del número de parámetros pasados.

about 4 years ago · Juan Pablo Isaza Denunciar

0

En el último caso de prueba, no está enviando un segundo argumento a la función, por lo que es la primera parte de if-else la que se ejecutará: la parte if . No hay return -1 en esa parte.

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