如何解决For-if嵌套在for-if中
//array
let posts = [{
text: "First post!",id: "p1",comments: [{
id: "c1",text: "First comment on first post!"
},{
id: "c2",text: "Second comment on first post!!"
},{
id: "c3",text: "Third comment on first post!!!"
}
]
},{
text: "Aw man,I wanted to be first",id: "p2",comments: [{
id: "c4",text: "Don't wory second poster,you'll be first one day."
},{
id: "c5",text: "Yeah,believe in yourself!"
},{
id: "c6",text: "Haha second place what a joke."
}
]
}
]
//loops
const removeComment = function(postId,commentID) {
for (let post in posts) {
if (posts[post].id == postId) {
for (let Comment of posts.comments) {
if (posts.comments[comment].id == commentID) {
comment.splice(comment,1)
}
}
}
}
}
//invoking the function
tweeter.removeComment("p2","c6")
我正在尝试在特定帖子(即“ p2”)中发表评论(即“ c6”),并将其从数组中删除。
为了遍历Comment对象,我在for-if中嵌套了for。 我没有收到任何错误,但是第一个for-if工作正常。 谢谢
解决方法
您需要更改一些功能。您正在使用let post in posts
,它可以循环显示数字,因此当您尝试作为对象访问逻辑时,逻辑将关闭。
let Comment of posts.comments
您希望通过匹配的postId遍历特定注释。
您正在使用未定义的comment
。检查以下代码段,运行并根据需要进行编辑。
let posts = [{
text: "First post!",id: "p1",comments: [{
id: "c1",text: "First comment on first post!"
},{
id: "c2",text: "Second comment on first post!!"
},{
id: "c3",text: "Third comment on first post!!!"
}
]
},{
text: "Aw man,I wanted to be first",id: "p2",comments: [{
id: "c4",text: "Don't wory second poster,you'll be first one day."
},{
id: "c5",text: "Yeah,believe in yourself!"
},{
id: "c6",text: "Haha second place what a joke."
}
]
}
]
//loops
const removeComment = (postId,commentID)=> {
for (let post of posts) {
if (post['id'] == postId) {
for (let Comment of post.comments) {
if (Comment['id'] == commentID) {
post.comments.splice(post.comments.indexOf(Comment),1);
}
}
}
}
}
removeComment("p2","c6");
console.log(posts);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。