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

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

  •  
  •   waiaan · Jun 22, 2021 · 3538 views
    This topic created in 1962 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
    breezeFP
    Jun 22, 2021
    1
    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
    waiaan
    OP
    Jun 22, 2021
    2
    @breezeFP 多谢
    powerfj
    powerfj
    Jun 22, 2021
    3
    @waiaan traverseTree(tree[i].children, cb) 这个递归调用, 是不是漏了 isNodeFirst 的参数
    waiaan
    waiaan
    OP
    Jun 22, 2021 via Android
    4
    @powerfj 是
    autoxbc
    autoxbc
    Jun 23, 2021
    5
    用 xpath 可以一次性获取全部节点,不用递归查找

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