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

150
Vistas
For in loop on object, y .find, devolviendo "indefinido"

Estoy tratando de recorrer un objeto ( objectToLoop ) y verificar si contiene la clave comments_text . Si es así, quiero verificar comments_text , y si la key dentro de comments_text coincide con commentId , quiero configurar let item para todo el objeto dentro de coments_text .

Estoy tratando de configurar let item en lo siguiente, pero me sale "indefinido":

 { commenter_comment: "reedwe", commenter_handle: "FALCON1", commenter_uid: "ZALb0B3wZEWjfdFIUOxteJRl9Xu1", key: "-MlaKXBMXzXIBJMsZQNX" }

Consejos y comentarios apreciados.

 const commentId = "-MlaKXBMXzXIBJMsZQNX" const objectToLoop = { comment: false, comments_text: { commenter_comment: "reedwe", commenter_handle: "FALCON1", commenter_uid: "ZALb0B3wZEWjfdFIUOxteJRl9Xu1", key: "-MlaKXBMXzXIBJMsZQNX" }, handle: "TURTLE1", key: "-MkeOOUboKdOcC3Sannl", title: "hello2" } function returnMatchingComment(commentIdKey) { let item; for (const post in objectToLoop) { if (post.comments_text) { item = Object.values(post.comments_text).find( (comment) => comment.key === commentIdKey ) }; if (item) { break; } } return item } console.log( returnMatchingComment(commentId) )

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

0

No necesita usar el bucle for...in . Primero puede verificar si objectToLoop tiene la propiedad comments_text usando Object.prototype.hasOwnProperty() y verificar si objectToLoop?.comments_text?.key == commentId . usé ?. (encadenamiento opcional) de modo que si objectToLoop.comments_text no existiera, simplemente devolvería undefined y no arrojaría un error feo.
Ejemplo:

 const commentId = "-MlaKXBMXzXIBJMsZQNX" const objectToLoop = { comment: false, comments_text: { commenter_comment: "reedwe", commenter_handle: "FALCON1", commenter_uid: "ZALb0B3wZEWjfdFIUOxteJRl9Xu1", key: "-MlaKXBMXzXIBJMsZQNX" }, handle: "TURTLE1", key: "-MkeOOUboKdOcC3Sannl", title: "hello2" } if(objectToLoop.hasOwnProperty('comments_text') && objectToLoop?.comments_text?.key == commentId) { let item = objectToLoop.comments_text; console.log(item) }
Para ser honesto, ni siquiera necesitamos objectToLoop.hasOwnProperty('comments_text') como con el encadenamiento opcional (como se mencionó anteriormente), objectToLoop?.comments_text?.key == commentId simplemente devolvería undefined si objectToLoop.comments_text no existiera o false si objectToLoop.comments_text.key no era igual a commentId .
Ejemplo 2:

 const commentId = "-MlaKXBMXzXIBJMsZQNX" const objectToLoop = { comment: false, comments_text: { commenter_comment: "reedwe", commenter_handle: "FALCON1", commenter_uid: "ZALb0B3wZEWjfdFIUOxteJRl9Xu1", key: "-MlaKXBMXzXIBJMsZQNX" }, handle: "TURTLE1", key: "-MkeOOUboKdOcC3Sannl", title: "hello2" } if(objectToLoop?.comments_text?.key == commentId) { let item = objectToLoop.comments_text; console.log(item) }

about 4 years ago · Juan Pablo Isaza Denunciar

0

Puedes poner algo de depuración. Tu si nunca disparas. El registro 'i' te da una gran información =)

 const commentId = "-MlaKXBMXzXIBJMsZQNX" const objectToLoop = { comment: false, comments_text: { commenter_comment: "reedwe", commenter_handle: "FALCON1", commenter_uid: "ZALb0B3wZEWjfdFIUOxteJRl9Xu1", key: "-MlaKXBMXzXIBJMsZQNX" }, handle: "TURTLE1", key: "-MkeOOUboKdOcC3Sannl", title: "hello2" } function returnMatchingComment(commentIdKey) { let item; var i =0; for (const post in objectToLoop) { console.log(post,i++); if (post.comments_text) { console.log("APPEND"); item = Object.values(post.comments_text).find( (comment) => comment.key === commentIdKey ) }; if (item) { break; } } return item } console.log( returnMatchingComment(commentId) )

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