2018年 js面试题

如何获取一个页面的所有节点数

function countNodes(node) {
    //  计算自身
    var count = 1;
    //  判断是否存在子节点
    if(node.hasChildNodes()) {
        //  获取子节点
        var cnodes = node.childNodes;
        for(var i=0; i

如何获取一个页面中 DOM 树的最大深度


var map = cb => arr => Array.prototype.map.call(arr, cb); 

var max = arr => arr.reduce((acc, cur) => {
    if (cur >= acc) return cur; 
    else return acc; 
}, arr[0]); 

var nextChildren = node => {
    // 基准条件 
    if (node.children.length === 0) return 1; 
    else {
        // 求子节点们的长度 并取最大值 
        var deeps = map(nextChildren)(node.children); 
        return 1 + max(deeps); 
    }
}

// 计算 
var $body = document.getElementsByTagName('body')[0];
var deep = nextChildren($body); 
console.log(deep); 

你可能感兴趣的:(面试题解答)