javascript - 我有一个案例,如何总结这个变量中的所有commentId?有没有人有同样的情况?

我有一个数据数组,我想将整个 commentId 与 JavaScript 相加。

const comments = [
  {
    commentId: 1,
    commentContent: 'Hai',
    replies: [
      {
        commentId: 11,
        commentContent: 'Hai juga',
        replies: [
          {
          commentId: 111,
          commentContent: 'Haai juga hai jugaa'
          },
          {
          commentId: 112,
          commentContent: 'Haai juga hai jugaa'
          }
        ]
      },
      {
      commentId: 12,
      commentContent: 'Hai juga',
      replies: [
          {
          commentId: 121,
          commentContent: 'Haai juga hai jugaa'
          }
        ]
      }
    ]
  },
    {
    commentId: 2,
    commentContent: 'Halooo'
    }
  ]

例如:假设有commentId [1, 2, 11, 12, 111, 112, 121]。因此,commentId.length7

回答1

你需要通过递归函数来做到这一点。因为评论和回复之间可以有 n 层嵌套。看看下面的代码。

function caluclateLength(commentsOrReplies, sum=0) {
  sum += commentsOrReplies.length
  return commentsOrReplies.reduce((total, commentorReply) => (total + caluclateLength(commentorReply.replies || [])), sum)
}
console.log(comments) // should return desired result

相似文章

go - Gorm - 预加载尽可能深

我正在使用Gorm,并且对如何从模型中检索嵌套的SubComments有一些疑问。我遇到的问题是嵌套两层的评论,即Comment.SubComments没有加载。我错过了Preload的内容吗?我还认...

flutter - 在 setstate ui 在 flutter 中没有改变之后

我正在制作一个简单的应用程序,我想在按下相应评论的按钮上显示和隐藏特定评论的回复。但是状态改变后UI并没有改变。如何解决这个问题,建议我一个想法并提前感谢。snapchatReply列表有commen...