javascript全局数组js用闭包遍历树状数组的方法
使用闭包来遍历树状数组的方法如下:
```javascript
function traverseTree(tree) {
var stack = [tree];
function next() {
var node = stack.shift();
if (node) {
stack = at(node.children);
return node.value;
}
return undefined;
}
return next;
}
// 示例树状数组
var tree = {
value: 1,
children: [
{
value: 2,
children: [
{
value: 4,
children: []
},
{
value: 5,
children: []
}
]
},
{
value: 3,
children: [
{
value: 6,
children: []
},
{
value: 7,
children: []
}
]
}
]
};
var nextNode = traverseTree(tree);
var value;
while ((value = nextNode()) !== undefined) {
console.log(value);
}
```
上述代码中,`traverseTree` 函数返回一个闭包 `next`,该闭包通过一个 `stack` 数组来实现深度优先遍历。在每次调用 `next` 函数时,它会从 `stack` 中取出一个节点并将其子节点添加到 `stack` 数组中。如果 `stack` 数组为空,则表示遍历结束。
上述代码会输出如下结果:
```
1
2
3
4
5
6
7
```
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论