JavaScript-Algorithms
JavaScript-Algorithms copied to clipboard
想到一个更好的解法
class TNode {
name: string
children?: TNode[]
constructor(name: string, children?: TNode[]) {
this.name = name
this.children = children
}
}
// 编写一个算法解析以下符号,转换为json树的结构
const str = `<xml><div><p><a/></p><p></p></div></xml><xml><div><p><a/></p><p></p></div></xml>`
// 解法
const toTree = (str: string) => {
const root = new TNode('', [])
const dfs = (str: string, parent: TNode) => {
const regexp = /<(.*?)>(.*?)<\/\1>/g
const match = [...str.matchAll(regexp)]
if (match.length) {
for (const group of match) {
const name = group[1]
const childStr = group[2]
const root = new TNode(name, [])
parent.children!.push(root)
dfs(childStr, root)
}
} else {
parent.children!.push(new TNode(str))
}
}
dfs(str, root)
return root.children
}