1 回答
TA贡献1825条经验 获得超6个赞
这是通过将字符串分块为标记和堆栈运算符的一种方法:
function parseNestedList(str) {
let pattern = /([^(),]*)([(),]?)/gm;
let part, ret = [], stack = [], context = ret;
while (((part = pattern.exec(str)) !== null) && (part[0].length > 0)) {
if (part[1].length) { context.push(part[1]); } // Push token
switch (part[2]) {
case "(": // Descend
stack.push(context);
context.push(context = []);
break;
case ",": // Next
continue;
default: // Ascend
context = stack.pop();
}
}
return ret;
}
添加回答
举报
