I'm trying to loop through an object (objectToLoop) and check to see if if contains the key comments_text. If it does, I want to check comments_text, and if the key within comments_text matches commentId, I want to set let item to the entire object within coments_text.
I'm trying to set let item to the following, but I'm getting "undefined":
{
commenter_comment: "reedwe",
commenter_handle: "FALCON1",
commenter_uid: "ZALb0B3wZEWjfdFIUOxteJRl9Xu1",
key: "-MlaKXBMXzXIBJMsZQNX"
}
Advice and feedback appreciated.
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)
)
keywithincomments_textmatchescommentId" - Then whyObject.values(post.comments_text)?for..inloops over object keys. Not the values. Keys are strings. Strings don't have acomments_textproperty.objectToLoopis meant to be an object?objectToLoopis an object, you don't need a loop and can instead use:let item = objectToLoop.comments_text