我們在處理url的跳轉(zhuǎn)時,往往會在url后面帶著很多參數(shù)。有時候需要把這些參數(shù)轉(zhuǎn)化成對象當(dāng)作參數(shù)進(jìn)行跳轉(zhuǎn)或其他之用,比如angular2的 routerLink的地址是不帶參數(shù)的,參數(shù)寫在 queryParams里,這時候就需要對url進(jìn)行處理。
<a ? [routerLink] = "/" ?[queryParams] = "{ a: 10, b : 2}">RouterLink</a>
當(dāng)然可能還有其他地方可能會用到此類轉(zhuǎn)換。
下面介紹對于url參數(shù)的幾種轉(zhuǎn)換方法
1. ? js處理,利用split()和循環(huán)實現(xiàn)
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];
}
結(jié)果 { 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]) : {};
這種方法可以直接進(jìn)行處理
參考鏈接 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() : {}
結(jié)果也是正確的。
不過lodash不會,所以把別人提供的方法放在這,再來在細(xì)細(xì)研究lodash
此方法已更新至文章? Lodash使用入門
參考鏈接 ? lodash文檔