For-if嵌套在for-if中

如何解决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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?