真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

JavaScript怎么實(shí)現(xiàn)DOM樹的深度優(yōu)先遍歷和廣度優(yōu)先遍歷-創(chuàng)新互聯(lián)

這篇文章主要介紹了JavaScript怎么實(shí)現(xiàn)DOM樹的深度優(yōu)先遍歷和廣度優(yōu)先遍歷,具有一定借鑒價(jià)值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

創(chuàng)新互聯(lián)公司專注于壽縣網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供壽縣營銷型網(wǎng)站建設(shè),壽縣網(wǎng)站制作、壽縣網(wǎng)頁設(shè)計(jì)、壽縣網(wǎng)站官網(wǎng)定制、小程序開發(fā)服務(wù),打造壽縣網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供壽縣網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。深度優(yōu)先遍歷
// 非遞歸,首次傳入的node值為DOM樹中的根元素點(diǎn),即html
// 調(diào)用:deep(document.documentElement)
function deep (node) {
  var res = []; // 存儲(chǔ)訪問過的節(jié)點(diǎn)
  if (node != null) {
    var nodeList = []; // 存儲(chǔ)需要被訪問的節(jié)點(diǎn)
    nodeList.push(node);
    while (nodeList.length > 0) {
      var currentNode = nodeList.pop(); // 當(dāng)前正在被訪問的節(jié)點(diǎn)
      res.push(currentNode);
      var childrens = currentNode.children;
      for (var i = childrens.length - 1; i >= 0; i--) {
        nodeList.push(childrens[i]);
      }
    }
  }
  return res;
}

// 使用遞歸
var res = []; // 存儲(chǔ)已經(jīng)訪問過的節(jié)點(diǎn)
function deep (node) {
  if (node != null) { // 該節(jié)點(diǎn)存在
    res.push(node);
    // 使用childrens變量存儲(chǔ)node.children,提升性能,不使用node.children.length,從而不必在for循環(huán)遍歷時(shí)每次都去獲取子元素
    for (var i = 0,  childrens = node.children; i < childrens.length; i++) {
      deep(childrens[i]);
    }
  }
  return res;
}
廣度優(yōu)先遍歷
// 遞歸
var res = [];
function wide (node) {
  if (res.indexOf(node) === -1) {
    res.push(node); // 存入根節(jié)點(diǎn)
  }
  var childrens = node.children;
  for (var i = 0; i < childrens.length; i++) {
    if (childrens[i] != null) {
      res.push(childrens[i]); // 存入當(dāng)前節(jié)點(diǎn)的所有子元素
    }
  }
  for (var j = 0; j < childrens.length; j++) {
    wide(childrens[j]); // 對(duì)每個(gè)子元素遞歸
  }
  return res;
}

// 非遞歸
function wide (node) {
  var res = [];
  var nodeList = []; // 存儲(chǔ)需要被訪問的節(jié)點(diǎn)
  nodeList.push(node);
  while (nodeList.length > 0) {
    var currentNode = nodeList.shift(0);
    res.push(currentNode);
    for (var i = 0, childrens = currentNode.children; i < childrens.length; i++) {
      nodeList.push(childrens[i]);
    }   
  }
  return res;
}

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享JavaScript怎么實(shí)現(xiàn)DOM樹的深度優(yōu)先遍歷和廣度優(yōu)先遍歷內(nèi)容對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián)建站,關(guān)注創(chuàng)新互聯(lián)網(wǎng)站制作公司行業(yè)資訊頻道,遇到問題就找創(chuàng)新互聯(lián)建站,詳細(xì)的解決方法等著你來學(xué)習(xí)!


本文題目:JavaScript怎么實(shí)現(xiàn)DOM樹的深度優(yōu)先遍歷和廣度優(yōu)先遍歷-創(chuàng)新互聯(lián)
網(wǎng)頁地址:http://weahome.cn/article/dsdoec.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部