【进阶】url字符串与js对象

Posted by ARTROY on 2019-11-05

获取 url 字符串中的参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// 方法一:
function getURLParams(url) {
const params = url.match(/([^?=&]+)(=([^&]*))/g)
return params?params.reduce(
// (a, v) => (a[v.slice(0, v.indexOf('='))] = v.slice(v.indexOf('=') + 1), a), {}
(a, v) => {
a[v.slice(0, v.indexOf('='))] = v.slice(v.indexOf('=')+1);
return a;
}, {}
):[]
}


// 方法二:
function getURLParams(url) {
var obj = {};
var str = url.indexOf('?') !== -1 ? url.split('?')[1] : url;
va
">r arr = str.split('&');
for (var i = 0; i < arr.length; i++) {
obj[arr[i].split('=')[0]] = (arr[i].split('=')[1]);
};
return obj;
}

// 执行 window.location.href window.location.search decodeURIComponent
getURLParams('http://www.baidu.com?name=url&age=18');

js 对象转 url 字符串

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// 方法一:
const getObjectToString = (obj) => Object.keys(obj).map((key) => `${encodeURIComponent(key)}=${encodeURIComponent(obj[key])}`).join('&');

// 方法二:
function getObjectToString(obj) {
var arr = [];
for (var key in obj) {
key = encodeURIComponent(key);
var values = obj[key];
if (values && values.constructor === Array) {
var pairArr = [];
for (var i = 0, len = values.length, value; i < len; i++) {
value = values[i];
pairArr.push(setPairParam(key,value))
}
arr = arr.concat(pairArr);
}
else {
arr.push(setPairParam(key, values));
}
}
return arr.join('&');
}
function setPairParam(key, value) {
if (typeof value === 'undefined') return key;
return key + '=' + encodeURIComponent(value === null ? '' : String(value));
}

// 执行 encodeURIComponent
var obj = {
age: 18,
name: 'url'
};
getObjectToString(obj);


支付宝打赏 微信打赏

欣赏此文,打赏一下



-->