微信小程序路径参数处理技巧:如何将query对象转换为URL参数

2025-03-10
来源:网络整理

JS将对象转换为URL参数和将URL参数转换为对象的方法

在开发Mini程序时,我们发现我们获得的路径不包括参数,但是微信Mini程序将参数用作对象。对于我们来说,这是不方便的路径。检索它时,我们将其转换为URL参数并将其组装成路径。

JS对象到URL参数

在这里,我们查看一个测试:如果我们在输入Mini程序时获得以下参数

path: "pages/new/info", query: { news_id: "144", scorce: "seo" }

对于这样的地址,我们需要组装它,因此我们需要将对象转换为= 114&= seo之类的格式。

第一种方法:正则表达式替换

第一种方法是使用正则表达式将其转换为字符串以转换:=,转换为“空,转换为&”,然后在两端删除{}。这是一个完整= 114&= SEO格式。

查看过程

let query = {news_id: "144", scorce: "seo"} let query_str = JSON.stringify(query) console.log(query_str) // {"news_id":"144","scorce":"seo"} let query_str_a = query_str.replace(/:/g,"=") console.log(query_str_a) //{"news_id"="144","scorce"="seo"} let query_str_b = query_str_a.reolace(/"/g, ''), console.lgo(quert_str_b)

发小程序开发_发小程序挨打动态图_将开发小程序

//{news_id=144,scorce=seo} let query_str_c = query_str_b.reolace(/,/g, '&') console.log(quert_str_c) //{news_id=144&scorce=seo} //去掉{} let query_str_d = query_str_c.match(/\{([^)]*)\}/) console.log(query_str_d[1]) //news_id=144&scorce=seo

我们获得了类似= 144&= SEO的数据格式,然后用路径拼接它可以获得完整的URL /new /new /info?= 144&= SEO,但是此方法的代码太多,只需参考它

遍历循环处理

convertObj(data) { var _result = []; for (var key in data) { var value = data[key]; if (value.constructor == Array) { value.forEach(function(_value) { _result.push(key + "=" + _value); }); } else { _result.push(key + '=' + value); } } return _result.join('&'); },

发小程序挨打动态图_发小程序开发_将开发小程序

console.log(convertObj(query)) //news_id=144&scorce=seo

该方法使用遍历对象将数据拼凑在一起,将数据转换为键=的格式,然后将=在字段中转换为&。第二种方法是一个相对简单的命令。

JS将URL参数转换为第一个对象

与将对象转换为URL参数的常规处理相反,您可以参考

拦截,横穿

URL会进入吗?获得以下字符,并使用('&')将它们转换为数组格式数据,然后将数据循环,处理=中,根据= = =,将其转换为两个数据,是[0]作为对象的键,下标是[1],这是与密钥相对应的值。以下方法的摘要

function urlToObj(str){   var obj = {};   var arr1 = str.split("?");   var arr2 = arr1[1].split("&");   for(var i=0 ; i < arr2.length; i++){     var res = arr2[i].split("=");     obj[res[0]] = res[1];   }   return obj; } console.log(urlToObj('https://www.baidu.com/s?ie=utf-8&f=3&rsv_bp=1&tn=baidu&wd=%E7%99%BE%E5%BA%A6')) //{ie: "utf-8", f: "3", rsv_bp: "1", tn: "baidu", wd: "%E7%99%BE%E5%BA%A6"}

分享