在Javascript中,用逗号分隔并用括号括起来的字符串生成数组

我正在尝试在某些条件下将字符串解析为 Javascript 中的数组

  1. 字符串中的每个逗号分隔不同的数组元素

  2. 括号包围的元素是它们前面元素的子数组

例子:

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


BIG阳
浏览 245回答 1
1回答

胡子哥哥

这是通过将字符串分块为标记和堆栈运算符的一种方法: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;}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript