javascript - Dom-Knoten durchqueren, in ein Array umwandeln und die tieferen Knoten nach vorne sortieren?
高洛峰
高洛峰 2017-06-26 10:51:49
0
1
774

Wie der Titel schon sagt, beginnen Sie mit einem Knoten und durchlaufen Sie ihn nach unten, bis alle Knoten vorne durchlaufen sind, und konvertieren Sie diese Knoten in ein Array.

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

Antworte allen(1)
仅有的幸福

递归遍历孩子,按底向上、左到右顺序

function listNode (node) {
  if (!(node instanceof Node)) {
    throw new TypeError("parameter 1 is not of type 'Node'")
  }
  return Array.from(node.childNodes || [])
    .reduce((cList, cNode) => cList.concat(listNode(cNode)), [])
    .concat([node])
}

补:按底向上、左到右顺序并不一定是层次最深的排前面。可以用层序遍历倒过来记录:

function listNode (rootNode) {
  if (!(rootNode instanceof Node)) {
    throw new TypeError("parameter 1 is not of type 'Node'")
  }
  var queue = [rootNode, null]
  var levelNodes = []
  var result = []

  while (queue.length > 1) {
    var node = queue.shift()
    if (node === null) {
      queue.push(null)
      result = levelNodes.concat(result)
      levelNodes = []
      continue
    }
    
    levelNodes.push(node)
    if (node.hasChildNodes()) {
      queue = queue.concat(Array.from(node.childNodes))
    }
  }
  
  if (levelNodes.length > 0) {
    result = levelNodes.concat(result)
  }
  
  return result
}
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage