美文网首页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