【发布时间】:2021-02-20 19:30:09
【问题描述】:
//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”),并将其从数组中删除。
为了浏览 Comments 对象,我写了一个 for if 嵌套在 for-if 中; 我没有收到任何错误,但第一个 for-if 工作正常。 谢谢
【问题讨论】:
-
请不要将代码作为图像包含在内。您可以编辑问题并添加minimal reproducible example吗?
-
我是新来的,很抱歉。我现在编辑我的问题。谢谢
-
您的代码中有很多接近但不准确的地方。对两个循环都使用
for..of,它使事情变得更简单。此外,Array.splice需要一个索引作为第一个参数,您必须为 cmets 保留一个索引计数器。看到 fiddle 做这项工作。您可能还想在找到匹配项时打破循环,我会让您解决,如何退出外循环。
标签: javascript arrays loops for-in-loop for-of-loop