先上代码 后面上函数参数说明以及调用返回结果

/*
 * @Author: 林夏
 * @Date:  24.6.27
 * @desc  url参数转对象
 * @params params -> 传入数据 String | Object
 * @params  _needEncode -> 是否需要编码 默认 true
 */
export function dealUrlSearchParams(_params = '', _needEncode = true) {
    const isUrlStr = !(_params instanceof Object);
    isUrlStr && _params.includes('?') && (_params = _params.split('?')[1]);
    const paramsVM = new URLSearchParams(_params);
    !_needEncode && paramsVM.forEach((v, k) => paramsVM.set(k, decodeURIComponent(v)));
    if (isUrlStr) return Object.fromEntries(paramsVM);
    return _needEncode ? String(paramsVM) : decodeURIComponent(paramsVM);
}

对象转url参数调用示范

const testItem = {
  name: "tom",
  age: 18,
  city: "成都"
};

// 对象转url参数
dealUrlSearchParams(testItem);
// result ->  name=tom&age=18&city=%E6%88%90%E9%83%BD

// 不进行中文编码
dealUrlSearchParams(testItem, false);
// result -> name=tom&age=18&city=成都

url参数转对象

const urlStr = 'https://www.baidu.com?name=tom&age=18&city=%25E6%2588%2590%25E9%2583%25BD'

// url参数转对象
dealUrlSearchParams(urlStr);
// result -> { "name": "tom", "age": "18", "city": "%E6%88%90%E9%83%BD"}

// 不进行中文编码
dealUrlSearchParams(urlStr, false);
// result -> { "name": "tom", "age": "18", "city": "成都"}

总有天会用到 欢迎收藏~
有帮助到大家 麻烦给博🐖点点赞~

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐