在Javascript中,用逗号分隔并用括号包围的字符串生成数组
我试图在特定条件下用Javascript将字符串解析为数组:在Javascript中,用逗号分隔并用括号包围的字符串生成数组,javascript,regex,mongodb,mongoose,Javascript,Regex,Mongodb,Mongoose,我试图在特定条件下用Javascript将字符串解析为数组: 字符串中的每个逗号分隔不同的数组元素 用括号括起来的元素是元素的子数组 在他们之前 例如: total, limit, items(added_at, added_by) 将变成 [total, limit, items[added_at, added_by]] 有关我为什么这样做的更多信息: 我试图使用Mongoose和MongoDB复制SpotifyAPI的限制字段逻辑 要仅获取曲目总数和请求限制,请执行以下操作: field
total, limit, items(added_at, added_by)
将变成
[total, limit, items[added_at, added_by]]
有关我为什么这样做的更多信息:
我试图使用Mongoose和MongoDB复制SpotifyAPI的限制字段逻辑
要仅获取曲目总数和请求限制,请执行以下操作:
fields=总计,限额
点分隔符可用于指定不重复出现的字段,而圆括号可用于指定对象内重复出现的字段。例如,要仅获取加法器的添加日期和用户ID:
fields=items(在处添加,由.id添加)
使用多个括号向下钻取嵌套对象,例如:
fields=items(曲目(姓名、href、相册(姓名、href))
链接:这里有一种方法,将字符串分块成令牌和堆栈运算符:
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;
}