【发布时间】:2019-11-21 11:15:41
【问题描述】:
我正在尝试从头开始编写 getElementByClassName,但我不确定何时返回递归。这就是我想出的:
const getElementsByClassName = (nameOfClass, parent) => {
const result = []
for(let el of parent) {
// console.log(el.children)
if(el.firstElementChild != null) {
// do it again on node deeper
getElementsByClassName(nameOfClass, el.children)
}
if(el.className === nameOfClass) {
result.push(el)
}
}
// when do I want to return result?
console.log(result)
return result
};
问题是我每个子节点都有一个数组,而不是同一个数组结果中的所有内容。我该如何解决这个问题?
【问题讨论】:
-
如果
getElementsByClassName(nameOfClass, el.children)返回一些东西,它不应该被推送到数组吗?您必须使用.concat而不是.push。result = result.concat(...)
标签: javascript recursion