文章目录
- [1 使用ES5和ES6求函数参数的和](#1 使用ES5和ES6求函数参数的和)
-
- [1.1 ES5](#1.1 ES5)
- [1.2 ES6](#1.2 ES6)
- [2 解析URL Params为对象](#2 解析URL Params为对象)
1 使用ES5和ES6求函数参数的和
1.1 ES5
javascript
function sum() {
let sum = 0;
Array.prototype.forEach.call(arguments, function(item) {
sum += item * 1;
})
return sum;
}
1.2 ES6
javascript
function sum(...nums) {
let sum = 0;
nums.forEach(function(item) {
sum += item * 1;
})
return sum;
}
2 解析URL Params为对象
javascript
/**
* 结果:
* {
* user: 'anonymous',
* id: [ 123, 456 ], // 重复出现的 key 要组装成数组,能被转成数字的就转成数字类型
* city: '北京', // 中文需解码
* enabled: true, // 未指定值得 key 约定为 true
* }
*/
let url = 'http://www.domain.com/?user=anonymous&id=123&id=456&city=%E5%8C%97%E4%BA%AC&enabled';
function parseParam(url) {
let paramStr = /.+\?(.+)$/.exec(url)[1];
let paramArr = paramStr.split('&');
let paramObj = {};
paramArr.forEach(function(item) {
if (/=/.test(item)) {
let [key, value] = item.split('=');
value = decodeURIComponent(value);
value = /^\d+$/.test(value) ? parseFloat(value) : value;
if (paramObj.hasOwnProperty(key)) {
paramObj[key] = [].concat(paramObj[key], value);
} else {
paramObj[key] = value;
}
} else {
paramObj[item] = true;
}
})
return paramObj;
}
console.log(parseParam(url));