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小时内删除。