function traverse(node) {
var result = [];
var nodes = [].slice.apply(node.childNodes);
for (let i=0; i<nodes.length; i++) {
let n = nodes[i];
if (n.nodeType === 1) { // 元素节点
if (n.offsetWidth > 50 && n.offsetHeight > 50) {
result.push(n);
}
if (n.childNodes.length > 1) {
result.push(...traverse(n));
}
}
}
return result;
}
traverse(document.body);
上面的traverse函数就是遍历参数节点的所有子节点的方法,原理非常简单,递归而已。
所以,这个问题更通用的描述是说,如何压缩数组,怎么把一个多维的数组,给变成一维。