请编写一个JavaScript函数 parseQueryString,它的用途是解析传入的URL,并根据参数返传入key对应的query值
时间: 2024-09-06 21:07:51 浏览: 40
```javascript
/**
* 解析传入的URL的查询字符串,并根据给定的key返回对应的值。
* 如果未找到对应的key,函数将返回null。
*
* @param {string} url - 需要获取值的参数名。
* @returns {string|null} 返回找到的参数值,未找到则返回null。
*/
function parseQueryString(url, key) {
// 使用正则表达式分割URL和查询字符串
const queryStringPattern = /\?([^#]*)/g;
const hashPattern = /#([^#]*)/g;
let queryStringMatch = queryStringPattern.exec(url);
let hashMatch = hashPattern.exec(url);
// 如果存在查询字符串,则解析之
if (queryStringMatch && queryStringMatch[1]) {
const queryString = queryStringMatch[1];
const params = queryString.split('&');
// 遍历参数数组,查找匹配的键值对
for (let i = 0; i < params.length; i++) {
const pair = params[i].split('=');
if (pair[0] === key) {
// 返回找到的值
return pair[1];
}
}
}
// 如果存在哈希值,则检查是否有查询字符串
if (hashMatch && hashMatch[1]) {
const hash = hashMatch[1];
const params = hash.split('&');
// 遍历参数数组,查找匹配的键值对
for (let i = 0; i < params.length; i++) {
const pair = params[i].split('=');
if (pair[0] === key) {
// 返回找到的值
return pair[1];
}
}
}
// 如果没有找到对应的key,返回null
return null;
}
// 示例用法:
// const value = parseQueryString('http://example.com/?key=value', 'key');
// console.log(value); // 输出: value
```
这个函数`parseQueryString`接受两个参数:一个是URL字符串,另一个是需要查询的键(key)。函数会解析URL中的查询字符串部分,并尝试找到对应的键值对。如果找到了匹配的键,函数返回对应的值;如果没有找到,函数返回`null`。