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;
}
添加回答
舉報