CoffeeScript:如何遍历多层次的递归数据?

时间:2013-01-13 05:06:36

标签: javascript recursion coffeescript

我的 commentsArray

中有很多级别的嵌套评论

(这是从API中提取的,无法更改)

commentsArray = [
    {
        author: "jeff"
        replies: [
            {
                author: "jeff"
                replies: [
                    {
                        author: "simon"
                    }
                ]
            },
            {
                author: "simon"
            }
        ]
    },
    {
        author: "simon"
    }
]

我还有一个递归函数 dialogueParse ,如果有问题的对象有“回复”,则会自行调用

dialogueParse = (comment) ->
    for child in comment
        if child.author is "simon"
            console.log "Simon was found.."

        if child.replies
            dialogueParse child

但是,此代码似乎无法正常工作。我最初调用函数后:

dialogueParse commentsArray

..由于某种原因,只找到位于第一级(在数组末尾)的那个。

simon ”在3个不同的地方列为作者。

我一直在研究这个问题好几个小时而且无处可去。任何帮助都非常感谢! :)

1 个答案:

答案 0 :(得分:2)

你不应该在递归中传递child.replies作为参数吗?

如:

dialogueParse = (comment) ->
    for child in comment
        if child.author is "simon"
            console.log "Simon was found.."

        if child.replies
            dialogueParse child.replies