我正在尝试在某些条件下将字符串解析为 Javascript 中的数组:字符串中的每个逗号分隔不同的数组元素括号包围的元素是它们前面元素的子数组例子:total, limit, items(added_at, added_by)会变成[total, limit, items[added_at, added_by]]关于我为什么这样做的更多信息:我正在尝试使用 Mongoose 和 MongoDB 复制 spotify API 的限制字段逻辑仅获取曲目总数和请求限制: fields=total,limit点分隔符可用于指定非重复出现的字段,而括号可用于指定对象内重复出现的字段。例如,要仅获取加法器的添加日期和用户 ID: fields=items(added_at,added_by.id)使用多个括号深入到嵌套对象,例如: fields=items(track(name,href,album(name,href)))链接:https ://developer.spotify.com/documentation/web-api/reference-beta/#endpoint-get-playlists-tracks
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;
}
添加回答
举报
0/150
提交
取消