我的理解是这样的哈,可以直接用遍历的方式
<script type="text/javascript">function http_builder_url(url, data) {
if(typeof(url) == 'undefined' || url == null || url == '') {
return ''
}
if(typeof(data) == 'undefined' || data == null || typeof(data) != 'object') {
return ''
}
url += (url.indexOf("?") != -1) ? "" : "?"
for(var k in data) {
url += ((url.indexOf("=") != -1) ? "&" : "") + k + "=" + encodeURI(data[k])
console.log(url)
}
return url
}
var param = {'name':'ddd', 'age':19}
var url = "http://www.baidu.com/a.html"
alert(http_builder_url(url, param))
//得到的结果:http://www.baidu.com/a.html?name=ddd&age=19
</script>
以下函数可以获取url任意参数的值:
function getParams(key){var url = location.search.replace(/^\?/,'').split('&')
var paramsObj = {}
for(var i = 0, iLen = url.length i < iLen i++){
var param = url[i].split('=')
paramsObj[param[0]] = param[1]
}
if(key){
return paramsObj[key] || ''
}
return paramsObj
}
可选参数key表示获取参数的名称,如果省略该参数,则会返回一个对象,包含所有参数的key和value。
我们在处理url的跳转时,往往会在url后面带着很多参数。有时候需要把这些参数转化成对象当作参数进行跳转或其他之用,比如angular2的 routerLink的地址是不带参数的,参数写在 queryParams里,这时候就需要对url进行处理。
当然可能还有其他地方可能会用到此类转换。
下面介绍对于url参数的几种转换方法
1. js处理,利用split()和循环实现
结果 { a: 10 , b :2}
2. 利用querystring
querystring是在node封装好的一个模块,有处理string的方法直接处理这种地址
这种方法可以直接进行处理
参考链接 Query String querystring 模块的使用
3. 利用lodash处理
结果也是正确的。
不过lodash不会,所以把别人提供的方法放在这,再来在细细研究lodash
此方法已更新至文章 Lodash使用入门
参考链接 lodash文档