Javascript 如何递归树并创建父路径节点数组?

Javascript 如何递归树并创建父路径节点数组?,javascript,Javascript,我有一棵像这样的树: { "name": "A", "children": [ { "name": "B", "children": [ { "name": "C", "children": [ { "n

我有一棵像这样的树:

{
    "name": "A",
    "children": [
        {
            "name": "B",
            "children": [
                {
                    "name": "C",
                    "children": [
                        {
                            "name": "D"
                        },
                        {
                            "name": "E"
                        }
                    ]
                },
                {
                    "name": "F"
                }
            ]
        },
        {
            "name": "G",
            "children": [
                {
                    "name": "H"
                }
            ]
        }
    ]
}
我希望遍历我的树,并为每个节点添加父组件的路径信息。因此,使用上面的示例,我正在寻找如何生成:

{
    "name": "A",
    "path": [
        "A"
    ],
    "children": [
        {
            "name": "B",
            "path": [
                "A",
                "B"
            ],
            "children": [
                {
                    "name": "C",
                    "path": [
                        "A",
                        "B",
                        "C"
                    ],
                    "children": [
                        {
                            "name": "D",
                            "path": [
                                "A",
                                "B",
                                "C",
                                "D"
                            ]
                        },
                        {
                            "name": "E",
                            "path": [
                                "A",
                                "B",
                                "C",
                                "E"
                            ]
                        }
                    ]
                },
                {
                    "name": "F",
                    "path": [
                        "A",
                        "B",
                        "F"
                    ]
                }
            ]
        },
        {
            "name": "G",
            "path": [
                "A",
                "G"
            ],
            "children": [
                {
                    "name": "H",
                    "path": [
                        "A",
                        "G",
                        "H"
                    ]
                }
            ]
        }
    ]
}

这是一个小的递归迭代建议,用于设置利用此的路径

资料来源:

  • :
bind()
方法创建一个新函数,在调用该函数时,将其this关键字设置为提供的值,并在调用新函数时提供的任何参数之前提供给定的参数序列

  • ,thisArg参数:
如果为forEach()提供了一个
thisArg
参数,则调用时会将该参数传递给callback,用作其this值。否则,将传递该值作为其此值使用。回调最终可观察到的该值是根据以下条件确定的

函数设置路径(o){
o、 path=this.concat(o.name);
Array.isArray(o.children)和&o.children.forEach(setPath,o.path);
};
var object={“name”:“A”,“children”:[{“name”:“B”,“children”:[{“name”:“C”,“children”:[{“name”:“D”},{“name”:“E”}]},{“name”:“F”}]},{“name”:“G”,“children”:[{“name”:“H”}]}]};
绑定([])(对象);

document.write(''+JSON.stringify(object,0,4)+'')听起来像一个简单的例子就足够了。递归地思考。您如何确保每个孩子都检索到父路径加上自己的路径?谢谢您的帮助。这不是家庭作业。我已经尝试过使用while循环来遍历树的各种实现,但是我不能得到正确的输出。这是一个更好的处理方法。哇,谢谢。我只是想了解解决这类问题的一般方法。你的解决方案非常简洁。我肯定需要读一点来理解它是如何工作的。“干杯!”乌龟,不客气。有关更多信息,请参见编辑。