* 解析url中的所有参数信息
*
@param
url {String} 传入的地址url,默认当前访问页面的window.location.href
*
@returns
{
Object
} 返回url参数所组成的Object数据对象,没有参数范会空 {}
const
parseQueryString
= (
url =
window
.location.href
) => {
const
searchIndex = url.
lastIndexOf
(
'?'
);
const
search = url.
substring
(searchIndex +
1
);
if
(searchIndex <
0
|| !search) {
return
{} };
return
JSON
.
parse
(
`{"
${
decodeURIComponent
(search).replace(/
"/g, '\\"
').replace(/&/g, '
","
').replace(/=/g, '
":"
')}"}`);
console.log('当前链接中的参数:', parseQueryString());
如果url没有参数,会返回空{}, 如果没有用一些js代码库或者工具,判断对象为空这里也给一个方法,希望有用:
判断对象是否为空
* 判读对象是否为空
* @param {Object} obj 传入对象
* @returns 如果对象为空返回 true,不为空则为false
const isEmptyObj = (obj) => {
if (!obj) {
return true;
const objKeys = Object.keys(obj);
if (objKeys.length > 0) {
return false;
return true;
使用时候请看好,对象为空返回true,不要判断反了
对象转换为URL的参数拼接方式
* @desc 对象序列化
* @param {Object} obj
* @return {String}
const stringfyQueryString = (obj) => {
if (!obj) return '';
let pairs = [];
for (let key in obj) {
let value = obj[key];
if (value instanceof Array) {
console.log('循环的内容', value);
for (let i = 0; i < value.length; ++i) {
pairs.push(encodeURIComponent(key + '[' + i + ']') + '=' + encodeURIComponent(value[i]));
continue;
pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(obj[key]));
return pairs.join('&');
const paramObj = {
name: 'zhangsan',
age: 12,
local: 'zhouer'
console.log('转换完', stringfyQueryString(paramObj));
以上希望对你有所帮助