js 封装常用方法
1. 获取数据类型
function getType(params) { return Object.prototype.toString.call(params).slice(8, -1) }
2. 深拷贝
function deepCopy(params) { var obj; if (typeof params === 'object') { if (Array.isArray(params)) { obj = []; for (var i = 0; i < params.length; i++) { obj.push(arguments.callee(params[i])) } } else { obj = {}; for (var c in params) { obj[c] = arguments.callee(params[c]); } } } else { return params; } return obj; }
3. 实现数字千分位
1)toLocaleString
function toFormat(num) { num = Number(num); return num.toLocaleString(); }
2)正则
function toFormat(num) { num = num.toString(); var t = /\B(?=(\d{3})+(?!\d))/g; if (!!~num.indexOf('.')) { var arr = num.split('.'); return (arr[0] || '').replace(t, ',') + '.' + arr[1]; } return num.replace(t, ',') }
4. 查询url后面参数
1)循环
function getParamsName(attr) { var url = location.href; // 'baidu.com?name=黎明&age=18&habit=basketball' var params = url.split('?')[1]; var paramsObj = {}; if (params) { var paramsList = params.split('&') || []; for (var i = 0; i < paramsList.length; i++) { var item = paramsList[i].split('=') || []; paramsObj[item[0]] = item[1]; } } return decodeURIComponent(paramsObj[attr]); }
2)正则
function getParamsName(attr) { let match = RegExp(`[?&]${attr}=([^&]*)`).exec(window.location.search) return match && decodeURIComponent(match[1]) }
5. 获取当前时间
function getDate() { var date = new Date(); var year = date.getFullYear(), month = date.getMonth() + 1, day = date.getDate(), hour = date.getHours(), minute = date.getMinutes(), second = date.getSeconds(); var fill = function (num) { num = num.toString(); return num.padStart(2, '0') // 为个位数时 补充前面的零 } var currentdate = year + '-' + fill(month) + '-' + fill(day) + ' ' + fill(hour) + ':' + fill(minute) + ':' + fill(second); return currentdate; }
6. 数组去重
1) es5
function uniq(arr) { if (Array.isArray(arr)) { return arr.filter((item, index, array) => array.indexOf(item) === index); } }
2)es6
function uniq(arr) { return [...new Set(arr)] }
7. 计算字符串出现次数最多的字母
function count(str) { var obj = {}, max = { key: '', val: 1 }; for (var i = 0; i < str.length; i++) { var item = str[i]; !obj[item] ? obj[item] = 1 : obj[item]++; if (obj[item] > max.val) { max.val = obj[item]; max.key = item; } } return max; }
未完待续...