blog
blog copied to clipboard
[a[b[c]]]转换为树结构
function normalize (str) {
let s = [];
let list = [];
let obj = {}
for (let i = 0; i < str.length; i++) {
let value = str[i]
switch (value) {
case '[':
s.push(i)
break;
case ']':
let leftIndex = s.pop();
list.unshift([leftIndex, i])
default:
break;
}
}
let [start, end] = list[0]
let parent = obj
for (let i = 1; i < list.length; i++) {
let [a, b] = list[i];
let result = str.slice(start + 1, a) + str.slice(b + 1, end);
start = a;
end = b;
parent.value = result;
parent.children = {};
parent = parent.children;
}
let [x, y] = list[list.length - 1]
parent.value = str.slice(x + 1, y)
return obj
}