用JS实现一个解析URL参数为对象的函数,并返回该对象
时间: 2024-04-17 16:29:50 浏览: 26
可以使用以下代码实现一个解析URL参数的函数:
```javascript
function parseURLParams(url) {
const queryStart = url.indexOf("?") + 1;
const queryEnd = url.indexOf("#") !== -1 ? url.indexOf("#") : url.length;
const query = url.slice(queryStart, queryEnd);
if (query === "") {
return {};
}
const params = query.split("&");
const result = {};
params.forEach(param => {
const [key, value] = param.split("=");
const decodedKey = decodeURIComponent(key);
const decodedValue = decodeURIComponent(value);
if (result.hasOwnProperty(decodedKey)) {
if (Array.isArray(result[decodedKey])) {
result[decodedKey].push(decodedValue);
} else {
result[decodedKey] = [result[decodedKey], decodedValue];
}
} else {
result[decodedKey] = decodedValue;
}
});
return result;
}
// 示例用法
const url = "https://example.com/?name=John&age=30&hobbies=reading&hobbies=cooking";
const params = parseURLParams(url);
console.log(params);
```
这个函数会解析传入的URL参数,并将其转换为一个对象。如果URL中没有参数,函数会返回一个空对象。注意,这个函数假设URL参数使用标准的key=value形式,并且值已经进行了URL编码。在解析过程中,函数会对参数的键和值进行解码,以保证正确性。