如何用JS实现对象转为url参数

JavaScript019

如何用JS实现对象转为url参数,第1张

我的理解是这样的哈,可以直接用遍历的方式

<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文档