仿写一个 nodejs 中 queryString 的 parse 方法
nodejs
queryString
queryString.parse(str, [sep], [eq], [options])
接收一个 URL 为参数,将 URL 中的查询信息,一对象的形式返回。如果有同一个查询信息有多个值,这些值将以数组的形式呈现。
- str
要解析的网址查询字符串 - sep
用于在查询字符串中分隔键值对的子字符串。 默认值: '&'。 - eq
用于在查询字符串中分隔键和值的子字符串。 默认值: '='。 - options
这里简单实现一个转换查询信息的功能
const queryString = {
parse: function (url) {
if (!url) return null;
let str = url.includes("?") ? url.split("?")[1] : url;
let items = str.split("&");
let result = {}
let arr = [];
let i = 0;
for (; i < items.length; i++) {
arr = items[i].split('=');
if (result[arr[0]]) {
if (Array.isArray(result[arr[0]])) {
result[arr[0]].push(arr[1])
} else {
result[arr[0]] = [result[arr[0]], arr[1]]
}
} else {
result[arr[0]] = arr[1];
};
};
return result;
},
};
export default queryString;
使用:
import queryString from '@/utils/queryString';
queryString.parse('xxx?query=domain_group&query=domain_group1&query=domain_group2&query2=domain_group2')
/* 返回值
{
query: (3) ["domain_group", "domain_group1", "domain_group2"]
query2: "domain_group2"
}
*/