For-if 嵌套在 for-if 中
For-if nested in 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")
我正在尝试在特定 post(即“p2”)中获取评论(即“c6”),并将其从数组中删除。
为了遍历 Comments 对象,我写了一个 for if 嵌套在 for-if 中;
我没有收到任何错误,但第一个 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);
//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")
我正在尝试在特定 post(即“p2”)中获取评论(即“c6”),并将其从数组中删除。
为了遍历 Comments 对象,我写了一个 for if 嵌套在 for-if 中; 我没有收到任何错误,但第一个 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);