1

我在 JSON 中有一组评论。这个 JSON 被加载到浏览器中。我希望将评论显示为线程评论层次结构,最近的评论在前。我做了很多搜索以找到正确的算法。当然,这是一个已解决的问题,但我找不到。

解释 JSON 字段:

  • createdtime = epochseconds(评论创建时间)
  • documentid = 此评论的 documentid
  • parentdocumentid = 此评论作为回复的评论的 documentid
  • topleveldocumentid = 评论所属博文的 documentid

问题是,使用 Javascript 将这些评论以层次结构形式显示在 HTML 中的有效方法是什么?(jquery代码很好)

[
    {
        "commenttext": "This is a comment",
        "parentdocumentid": "c88cbdd6d05811e19fe912314301329d",
        "doctype": "comment",
        "topleveldocumentid": "c88cbdd6d05811e19fe912314301329d",
        "createdtime": 1343222535,
        "documentid": "c0341e96d65b11e1a91d12314301329d"
    },
    {
        "commenttext": "This is a another comment",
        "parentdocumentid": "c88cbdd6d05811e19fe912314301329d",
        "doctype": "comment",
        "topleveldocumentid": "c88cbdd6d05811e19fe912314301329d",
        "createdtime": 1343222639,
        "documentid": "fe5209e0d65b11e1a91d12314301329d"
    },
    {
        "commenttext": "Yet another comment",
        "parentdocumentid": "c88cbdd6d05811e19fe912314301329d",
        "doctype": "comment",
        "topleveldocumentid": "c88cbdd6d05811e19fe912314301329d",
        "createdtime": 1343297245,
        "documentid": "b2d9f0f0d70911e1903d12314301329d"
    },
    {
        "commenttext": "I have a comment",
        "parentdocumentid": "c88cbdd6d05811e19fe912314301329d",
        "doctype": "comment",
        "topleveldocumentid": "c88cbdd6d05811e19fe912314301329d",
        "createdtime": 1343364418,
        "documentid": "1971ca6cd7a611e180fa12314301329d"
    }
]

编辑:根据评论,我有更具体的问题:具体来说,我的问题是:

1:这个JSON数据结构是不是链表?”(即每一项都指定了它的父项)

2:是否有一种众所周知的算法可以遍历链表并将其显示为排序的评论层次结构?如果是,有人可以指导我进行描述吗?

3:评论层次结构是“有序树”的同义词吗?

谢谢

4

1 回答 1

-1

将下划线库用于模板,并使用for ... in循环遍历数组中的每个对象(注释)。

这是使用此方法应遵循的基本模式的模型:

var data = {...your json obj...},
    markup = $("#tmpl").html(),
    commentTmpl = _.template(markup);

for (comment in data) {
    $("#comment-list").append( commentTmpl(comment) );
}

还有你的模板:

<script type="javascript/template">
    <li><%= commenttext %></li>
</script>

阅读这些以了解:

于 2012-07-28T01:17:19.273 回答