推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
waiaan

这段代码有办法更优雅一点吗?

  •  
  •   waiaan · Jun 22, 2021 · 3084 views
    This topic created in 1789 days ago, the information mentioned may be changed or developed.
      function traverseTree (tree, cb, isNodeFirst) {
        if (isNodeFirst) {
          for (let i = 0; i < tree.length; i++) {
            cb(tree[i], i, tree)
            if (tree[i].children && tree[i].children.length > 0) {
              traverseTree(tree[i].children, cb)
            }
          }
        } else {
          for (let i = 0; i < tree.length; i++) {
            if (tree[i].children && tree[i].children.length > 0) {
              traverseTree(tree[i].children, cb)
            }
            cb(tree[i], i, tree)
          }
        }
      }
    
    6 replies    2021-06-23 09:48:09 +08:00
    breezeFP
        1
    breezeFP  
       Jun 22, 2021
    function traverseTree(tree, cb, isNodeFirst) {
    for (let i = 0; i < tree.length; i++) {
    if(isNodeFirst) {
    cb(tree[i], i, tree)
    }
    if (tree[i].children && tree[i].children.length > 0) {
    traverseTree(tree[i].children, cb)
    }
    if(!isNodeFirst) {
    cb(tree[i], i, tree)
    }
    }
    }
    waiaan
        2
    waiaan  
    OP
       Jun 22, 2021
    @breezeFP 多谢
    powerfj
        3
    powerfj  
       Jun 22, 2021
    @waiaan traverseTree(tree[i].children, cb) 这个递归调用, 是不是漏了 isNodeFirst 的参数
    waiaan
        4
    waiaan  
    OP
       Jun 22, 2021 via Android
    @powerfj
    autoxbc
        5
    autoxbc  
       Jun 23, 2021
    用 xpath 可以一次性获取全部节点,不用递归查找

    const arr = [];
    for( let result = document.evaluate('//node()', document ) , next ; next = result.iterateNext() ; arr.push(next) );
    console.log(arr);
    waiaan
        6
    waiaan  
    OP
       Jun 23, 2021
    @autoxbc
    不是遍历 DOM 的。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2773 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 258ms · UTC 11:01 · PVG 19:01 · LAX 04:01 · JFK 07:01
    ♥ Do have faith in what you're doing.