第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

【九月打卡】第7天 深度 / 廣度優(yōu)先遍歷 DOM 樹

標簽:
JavaScript

课程名称2周刷完100道前端优质面试真题
课程章节:第8章 前端面试技能拼图6: 编写高质量代码 - 正确,完整,清晰,鲁棒
主讲老师双越
课程内容
今天学习的内容包括:
8-8 深度优先遍历一个DOM树
8-9 广度优先遍历一个DOM树
8-10 【连环问】深度优先遍历可以不用递归吗

课程收获
大概复述一下学的内容。

深度优先遍历:
div>p>hello >b>world >img > 注释 > ul>li>a >li>b
广度优先遍历:
div> p>img>注释>ul > hello>b>li>li > world>a>b

node 和 element 区别
childNodes:任何元素的节点。HtmlElement、文本(含换行)、注释
chilldren:HtmlElement

打印节点

节点分不同类型打印。

const visitNode = (node) => {
	if (node instanceof Comment) {
    console.log("注释", node.textContent);
  } else if (node instanceof Text) {
    // 去除换行符、空格
    const t = node.textContent?.trim();
    if (t) {
      console.log("文本", t);
    } 
  } else if (node instanceof HTMLElement) {
    console.log("HTMLElement", `<${node.tagName.toLowerCase()}>`);
  }
}

深度优先遍历递归实现

读取当前节点,并依次读取当前深度遍历后的子节点。

  const dfs = (node) => {
    if (node) {
      visitNode(node);
      if (node.childNodes.length) {
        node.childNodes.forEach(element => dfs(element));
      }
    }
  }

深度优先遍历栈实现

访问栈顶元素,并把子元素全部逆序入栈。

    const dfs1 = (node) => {
      let stack = [];
      stack.push(node);
      while(stack.length > 0) {
        const curNode = stack.pop();
        if (curNode == null) {
          break;
        }
        visitNode(curNode);
        if (curNode.childNodes.length) {
          Array.from(curNode.childNodes).reverse().forEach((element) => stack.push(element));
        }
      }
    };

广度优先遍历

利用队列。 访问队头,并把队头的子元素全部入队。直到整个队列处理完。

    const bfs = (node) => {
      let queue = [];
      queue.unshift(node);
      while(queue.length > 0) {
        const curNode = queue.pop();
        if (curNode == null) {
          break;
        }
        visitNode(curNode);
        if (curNode.childNodes.length) {
          curNode.childNodes.forEach((element) => queue.unshift(element));
        }
      }
    };

以上,结束。

點擊查看更多內(nèi)容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優(yōu)惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消