首页 > 其他分享 >js 实现解析和构造Url参数

js 实现解析和构造Url参数

时间:2022-08-29 23:52:10浏览次数:63  
标签:const Url js url split return 解析 true isObject

// 解析获取的 url 中的参数为对象
function parseQueryString(url) {
    if (!url) {
        return {};
    }
    const qsArr = decodeURIComponent(url).split("?")[1].split("&");
    return qsArr.reduce((a, b) => {
        const [key, val] = b.split("=");
        a[key] = val;
        return a;
    }, {});
}
console.log(parseQueryString("http://www.xxx.com/d?a=&b=1&c"));

// 解析对象为参数格式
function queryString(params = {}) {
    const data = Object.entries(params);
    const qs = data
        .map(([k, v]) => {
            let noVal = false;
            let isObject = false;
            if (!v) {
                noVal = true;
            }
            if (v instanceof Object) {
                isObject = true;
            }
            isObject = true;
            return `${encodeURIComponent(k)}=${
                noVal ? "" : isObject ? JSON.stringify(v) : v
            }`;
        })
        .join("&");
    return qs;
}
console.log(
    queryString({
        f: [1, 2, 3],
        e: { a: 1 },
        a: 1,
        b: undefined,
        c: null,
        d: "",
        orgId: "1",
        to: "1661615999000",
        name: "a",
    })
);

 

标签:const,Url,js,url,split,return,解析,true,isObject
From: https://www.cnblogs.com/beileixinqing/p/16637830.html

相关文章

  • 数据传输格式XML和JSON
    XML:可扩展标记语言格式臃肿,解析麻烦,需要用到第三库 JSON:JavaScript对象表示法都是字符串,解析简单 JSON可支持的数据类型只有六种数值、字符串、布尔值、null、对......
  • .NET 开源工作流: Slickflow流程引擎高级开发(十) -- BpmnJS流程设计器集成
    前言:在Slickflow产品开发过程中,前端流程设计器经历了几个不同的版本(jsPlumb,mxGraph等),目的是为了在设计流程时的用户体验更加良好,得到客户的好评和认可。BpmnJS流程设......
  • Node.js安装简介
    一、Node.js简介Node.js是一个开源和跨平台的JavaScript运行时环境。它几乎是任何类型项目的流行工具!Node.js在浏览器之外运行V8JavaScript引擎(GoogleChrome的内核)。这使......
  • JSP的文件上传和下载
    文件的上传和下载文件的上传和下载,是非常常见的功能。很多的系统中,或者软件中都经常使用文件的上传和下载。比如:微信头像,就使用了上传。邮箱中也有附件的上传和下载功能......
  • 21JSONP及Axios
    JSONP及Axiosjsonp概述:JSONP是一种跨域解决方案,它主要是利用了script标签不受跨域影响的特性来完成对应的请求操作。实际上是一个get请求。什么叫跨域同源策略(属于浏览......
  • 在NodeJS中安装babel
    安装babel安装babel打开终端,输入命令:npminstall--save-dev@babel/core@babel/cli@babel/preset-env@babel/node安装完毕之后,再次输入命令安装:npminstall--save@......
  • JS/TS算法---dp和贪心
    一、动态规划动态规划(dynamicprogramming,DP)是一种将复杂问题分解成更小的子问题来解决的优化技术。注意,动态规划和分而治之是不同的方法。分而治之方法是把问题分解......
  • jsp_注解和jsp内置对象
    注释  HTML注释:<!-- -->只能注释HTML片段   jsp推荐使用<%-- --%>可以注释所以片段<!--<h1>hello</h1>--><%--System.out.ptintl......
  • jsp上传大文件的解决方案
    ​前言:因自己负责的项目(jetty内嵌启动的SpringMvc)中需要实现文件上传,而自己对java文件上传这一块未接触过,且对Http协议较模糊,故这次采用渐进的方式来学习文件上传的原......
  • pytest系列——pytest-base-url插件之配置可选的项目系统URL
    前言①当我们的自动化代码完成之后,通常期望可以在不同的环境进行测试,此时可以将项目系统的URL单独拿出来,并且可以通过pytest.ini配置文件和支持pytest命令行方式执行。②......