我们在处理url的跳转时,往往会在url后面带着很多参数。有时候需要把这些参数转化成对象当作参数进行跳转或其他之用,比如angular2的 routerLink的地址是不带参数的,参数写在 queryParams里,这时候就需要对url进行处理。
<a [routerLink] = "/" [queryParams] = "{ a: 10, b : 2}">RouterLink</a>
当然可能还有其他地方可能会用到此类转换。
下面介绍对于url参数的几种转换方法
1. js处理,利用split()和循环实现
const url = "/content?a=10&b=2";
let formattedParams = {};
const params = url.split("?")[1].split("&");
for ( let i = 0; i < params.length; i ++) {
formattedParams[params[i].split("=")[0]] = params[i].split("=")[1];
}
结果 { a: 10 , b :2}
2. 利用querystring
querystring是在node封装好的一个模块,有处理string的方法直接处理这种地址
const querystring = require('querystring');
const url = "/content?a=10&b=2";
const params = url.split("?");
let formattedParams = params.length >1 ? querystring.parse(params[1]) : {};
这种方法可以直接进行处理
参考链接 Query String querystring 模块的使用
3. 利用lodash处理
const url = "/content?a=10&b=2";
const params = url.split("?");
let formattedParams = params.length >1 ? _.chain(params[1])
.split("&")
.map(_.ary(_.partial(_.split,_,"="),1))
.fromPairs()
.value() : {}
结果也是正确的。
不过lodash不会,所以把别人提供的方法放在这,再来在细细研究lodash
此方法已更新至文章 Lodash使用入门
参考链接 lodash文档