- 考虑了参数中可能有多个相同键名的情况
- 会对键和值进行 URI 解码
- 实际应用中还可以根据需要进行错误处理和更多的参数验证
function parseURLParams(url = '') {
const params = {};
const queryString = url?.split("?")[1];
if (!queryString) return params;
const paramPairs = queryString.split("&");
for (const pair of paramPairs) {
const [key, value] = pair.split("=");
const decodedKey = decodeURIComponent(key);
const decodedValue = decodeURIComponent(value);
if (params.hasOwnProperty(decodedKey)) {
if (Array.isArray(params[decodedKey])) {
params[decodedKey].push(decodedValue);
} else {
params[decodedKey] = [params[decodedKey], decodedValue];
}
} else {
params[decodedKey] = decodedValue;
}
}
return params;
}
const url = "https://example.com/path?name=John&age=25&interests=reading&interests=swimming";
const parsedParams = parseURLParams(url);
console.log(parsedParams);