/**
* @param {string} str
* @return {string[]}
*/
function extract(str) {
// your code here
let a = new DOMParser();
let c = a.parseFromString(str, "text/html");
let d = document.createTreeWalker(c, NodeFilter.SHOW_ELEMENT)
let curr = d.currentNode;
let res = [];
while(curr){
if(curr.nodeName === "A") res.push(curr.outerHTML);
curr = d.nextNode()
}
return res;
}
这里同样可以获取到所有的节点,使用 d.nextNode() 可以不断获取到整个 DOM 结构所有的节点
当然,还可以使用正则的方式来解决这种问题
function extract(str) {
return str.match(/<a(\s[^>]*)?>.*?<\s*\/\s*a>/g) || [];
}
解答
这里同样可以获取到所有的节点,使用 d.nextNode() 可以不断获取到整个 DOM 结构所有的节点
当然,还可以使用正则的方式来解决这种问题