萌新写JavaScript树遍历(es6+)

184 阅读1分钟

前言

这么生草的标题,应该就不会有人关注我了,哈哈。

前排许愿

  1. 若川大佬拉我进笔记群。
  2. 找到一份前端工作。
  3. 我的秘密心愿:*********************

起因

  • 缘分嘛,缘分到了,就写出来了。
  • 多看书,多爱护环境。

它是什么?

  • 它可能是函数式风格的最佳搭配。
  • 没有过程化代码,非常舒适。

主体

知识组成

  • 可迭代对象
  • 生成器
  • 结构化对象
  • 弱引用WeakSet

知识来源

  • 掘金文章 juejin.cn/post/704988… (很久以前,我反复记忆它大概5次左右,最后终于记住了,敲了很多遍demo)
  • Javascript 高级程序设计概念掌握

内容

  • 贴代码好了,优秀的程序员一定是读源码的(PS:楼主很懒,快来批评他)。
    //核心代码
    function * iteratorTree(tree){
            const stack=[tree];;
            let curryNode;
            let set=new WeakSet();
            while(stack.length>0){
                curryNode=stack.pop();

                if(set.has(curryNode)){
                    continue;
                }else{
                    set.add(curryNode);
                }

                if(Array.isArray(curryNode.children)){
                    stack.push(...curryNode.children);
                }
                yield curryNode;
            }
        };

留言

  • 核心代码给各位了,相信各位一定能够优化它。优化好了,发文章,然后把链接发到评论,互关呀。
  • 有中级前端工程师需求,可以找我呀,我很努力的也很喜欢编程工作。

彩蛋

  • 我在GitHub仓库里的demo留了一点小彩蛋。demo repo.
  • 若川大佬公众号发送PDF,有好东西,还不马上关注。