Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

209
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda