【发布时间】:2020-05-04 10:32:39
【问题描述】:
我在一个论坛上工作,在检索到帖子的所有 cmets 后,我试图将它们分类为 cmets 和子 cmets。
每条评论都有自己的唯一 ID 以及其父级的 ID。如果评论是直接在帖子上发表的(即顶级评论),则父 ID 等于论坛帖子 ID。
"doc": [{
"id": "73emgNKLiCdzcREyCLtg",
"data": {
"likeCount": 0,
"body": "comment text",
"createdAt": "2020-01-16T21:42:37.782Z",
"forumPostId": "csRvt21qDqSeLqXv3mAr", //forumPostID is same as ParentId
"parentId": "csRvt21qDqSeLqXv3mAr"
}
}, {
"id": "2sRvt21qDqSeLqXv3mAr",
"data": {
"likeCount": 0,
"body": "subcomment text",
"createdAt": "2020-01-16T21:42:37.782Z",
"forumPostId": "csRvt21qDqSeLqXv3mAr",
"parentId": "73emgNKLiCdzcREyCLtg"
}
}, {
"id": "1242sR1qDqSeLqXv3mAr",
"data": {
"likeCount": 1,
"body": "subcomment text",
"createdAt": "2020-01-16T21:42:37.782Z",
"forumPostId": "csRvt21qDqSeLqXv3mAr", //forumPostID is same as ParentId
"parentId": "csRvt21qDqSeLqXv3mAr"
}
}, {...
我试图将排序后的 cmets 存储在一个名为“cmets”的对象中。每一代的cmets和子cmets都是按照“likeCount”和“CreatedAt”排序的,每条评论都包含了它所有的子cmets。最终结果如下所示:
"comments": [{
"id": "1242sR1qDqSeLqXv3mAr",
"data": {
"likeCount": 1, //comment with most likes moved to top
"body": "subcomment text",
"createdAt": "2020-01-16T21:42:37.782Z",
"forumPostId": "csRvt21qDqSeLqXv3mAr",
"parentId": "csRvt21qDqSeLqXv3mAr"
},
"comments": {}
}, {
"id": "73emgNKLiCdzcREyCLtg",
"data": {
"likeCount": 0,
"body": "comment text",
"createdAt": "2020-01-16T21:42:37.782Z",
"forumPostId": "csRvt21qDqSeLqXv3mAr",
"parentId": "csRvt21qDqSeLqXv3mAr"
},
"comments": {
"id": "2sRvt21qDqSeLqXv3mAr",
"data": {
"likeCount": 0,
"body": "subcomment text",
"createdAt": "2020-01-16T21:42:37.782Z",
"forumPostId": "csRvt21qDqSeLqXv3mAr",
"parentId": "73emgNKLiCdzcREyCLtg"
}
}
}, {...
*注意子cmets可以有子cmets(即可以无限代)
我一直在阅读有关 find()、filter() 和 sort() 的内容,但无法完全理解完成此任务的函数/循环会是什么样子。
我们将不胜感激任何和所有的帮助/指导!
【问题讨论】:
-
到目前为止你尝试过什么?为什么要在客户端而不是服务器上执行此操作?
-
我想你的意思是
comments应该是一个评论对象数组,而不是一个对象本身,对吧? -
我猜您将数据保存在数据库中,如果您更改查询并从那里获得所需的数据结构会不会更好?
-
@Andreas 很抱歉有任何混淆,我正在做这个服务器端。排序后的对象将被转发给客户端
-
@AmitB。正确
标签: javascript arrays node.js sorting filter