Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

146
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!