Appearance
解析查询字符串参数
给定一个 URL 字符串,要求返回一个查询字符串参数组成的对象。
注:要求查询字符串参数的值不包含 hash 值
Code
javascript
/**
* 从给定的 URL 字符串中返回查询字符串参数
* @param {string} url
* @returns {Record<string, string>}
*/
function parseQueryString(url) {
const ans = {};
const arr = url.split('?')[1]?.split('#')?.[0];
if (arr) {
arr.split('&').forEach((item) => {
const temp = item.split('=');
// 如果要包含中文,可以使用 decodeURIComponent() 方法进行转换
ans[temp[0]] = temp[1];
});
}
return ans;
}
Test Cases
javascript
const { parseQueryString } = require('./parseQueryString.js');
describe('parseQueryString', () => {
const URL1 = 'https://www.baidu.com?q=123&b=456#head';
const URL2 = 'https://www.baidu.com?q=123&b=456';
const URL3 = 'https://www.baidu.com';
const URL4 = 'https://www.baidu.com?q=123#head';
const URL5 = '';
it('should be empty object', () => {
expect(parseQueryString(URL5)).toEqual({});
expect(parseQueryString(URL3)).toEqual({});
});
it('should returns a query string object without hash', () => {
expect(parseQueryString(URL1)).toEqual({ q: '123', b: '456' });
expect(parseQueryString(URL2)).toEqual({ q: '123', b: '456' });
expect(parseQueryString(URL4)).toEqual({ q: '123' });
});
});