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

213
Vistas
Me pregunto por qué mi for in loop no está recorriendo todo mi objeto Javascript

Obtengo un valor booleano falso cuando cada objeto tiene un nombre como propiedad. Consolé la prop var y obtuve 0 de vuelta. ¿Qué estoy haciendo mal y por qué no se repite en todos los objetos?

 function truthCheck(collection, pre) { for (let prop in collection) { console.log(prop) if (collection[prop].hasOwnProperty(pre) && Boolean(collection.forEach((item) => item[pre]))) { return true } else return false } } console.log(truthCheck([{ name: "Quincy", role: "Founder", isBot: false }, { name: "Naomi", role: "", isBot: false }, { name: "Camperbot", role: "Bot", isBot: true }], "name"))

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

0

Está devolviendo un boolean para que el bucle nunca pase de la primera iteración. Use Array.some o Array.every para verificar varios elementos y regresar desde ese contexto.

También use un bucle for of para tener un acceso más fácil a los elementos.

No estoy seguro exactamente de qué lógica desea con la prueba booleana forEach interna, así que la eliminé y solo probé la propiedad definida. Este fragmento debería orientarlo en la dirección correcta, pero agréguelo a esa lógica si desea probar una cadena vacía, etc.

Finalmente, agregué un valor allPassed que ahora se devuelve desde la función para que pueda rastrear si algún elemento falló.

 function truthCheck(collection, pre) { let allPassed = true for (let item of collection) { console.log(item) if (item.hasOwnProperty(pre)) { console.log(true) } else { console.log(false) allPassed = false } } return allPassed } console.log(truthCheck([{ name: "Quincy", role: "Founder", isBot: false }, { name: "Naomi", role: "", isBot: false }, { name: "Camperbot", role: "Bot", isBot: true }, { role: "No Name", isBot: true }], "name"))

about 4 years ago · Juan Pablo Isaza Denunciar

0

¿Por qué no se repite sobre cada objeto?

Porque return detiene la ejecución de la función. Tiene un return en ambas ramas ( if y else ), por lo que finaliza la función después del primer elemento de collection .

¿Qué estoy haciendo mal?

El return desde arriba y está recorriendo todos los elementos de la colección (en el peor de los casos) "dos veces" (en realidad es collection.length * collection.length veces). Una vez con for...in y una vez con collection.every() .

Para determinar si todos los elementos de collection tienen una propiedad específica, y si esa propiedad tiene un valor real , solo necesita una versión ligeramente modificada de la condición if :

 collection.every(item => item.hasOwnProperty(pre) && item[pre]) 

 function truthCheck(collection, pre) { return collection.every(item => item.hasOwnProperty(pre) && item[pre]); } const input = [ { name: "Quincy", role: "Founder", isBot: false }, { name: "Naomi", role: "", isBot: false }, { name: "Camperbot", role: "Bot", isBot: true } ]; const result = truthCheck(input, "name"); console.log(result);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Aquí está mi versión del código:

 let istruthCheck = (arr, pre) => { return arr.every( item => item.hasOwnProperty(pre) ) } const arr = [ {name: "Quincy", role: "Founder", isBot: false}, {name: "Naomi", role: "", isBot: false}, {name: "Camperbot", role: "Bot", isBot: true} ]; console.log( istruthCheck(arr, "name") )

Espero eso ayude... :)

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