美文网首页JavaScript 进阶营
把对象转化为get请求的链接参数

把对象转化为get请求的链接参数

作者: 村南一枝花 | 来源:发表于2019-12-30 15:41 被阅读0次
    urlParams = objectToQuery({
      page: {
        num: 1,
        size: 10
      },
      filter: {
        class: {
          id: 1,
          name: '11212'
        },
        name: 'xxx'
      }
    }) 
    console.log(urlParams)
    
    ?page[num]=1&page[size]=10&filter[class][id]=1&filter[class][name]=11212&filter[name]=xxx
    
        /**
         * @description: 把object转化为url请求参数
         * @param {type}
         * @return: 拼接url
         */
        objectToQuery() {
            let obj = arguments[0];
            let prefix = arguments[1];
            if (typeof obj !== "object") return "";
            const attrs = Object.keys(obj);
            return attrs.reduce((query, attr, index) => {
                // 判断是否是第一层第一个循环
                if (index === 0 && !prefix) query += "?";
                if (typeof obj[attr] === "object") {
                    const subPrefix = prefix ? `${prefix}[${attr}]` : attr;
                    query += this.objectToQuery(obj[attr], subPrefix);
                } else {
                    if (prefix) {
                        query += `${prefix}[${attr}]=${obj[attr]}`;
                    } else {
                        query += `${attr}=${obj[attr]}`;
                    }
                }
                // 判断是否是第一层最后一个循环
                if (index !== attrs.length - 1) query += "&";
                return query;
            }, "");
        }
    

    转载请注明出处

    相关文章

      网友评论

        本文标题:把对象转化为get请求的链接参数

        本文链接:https://www.haomeiwen.com/subject/pmdmoctx.html