深拷贝
/** * deepClone 深拷贝 * @param {object} origin 源对象 * @param {object} target 目标对象 */function deepClone (origin, target) { var tar = target || {}, toStr = Object.prototype.toString, arrType = '[object Array]'; for (var k in origin) { if (origin.hasOwnProperty(k)) { if (typeof origin[k] === 'object' && origin[k] !== 'null') { tar[k] = toStr.call(origin[k]) === arrType ? [] : {}; deepClone(origin[k], tar[k]); } else { tar[k] = origin[k]; } } } return tar;}
typeof加强版
/** * myTypeof 加强版typeof * @param {any} value 需要进行数据类型检测的值 */function myTypeof (value) { if (value === null) { return 'null'; } return typeof value === 'object' ? { "[object Object]": "object", "[object Array]": "array", "[object String]": "String", "[object Number]": "Number", "[object Boolean]": "Boolean" }[{}.toString.call(value)] : typeof value;}
数组扁平化
/** * flatten 数组扁平化 */Array.prototype.flatten = function () { var _arr = this, toStr = {}.toString; if(toStr.call(_arr) !== '[object Array]'){ throw new Error('Only Array can use it'); } return _arr.reduce((prev, item) => { return prev.concat( toStr.call(item) === '[object Array]' ? item.flatten() : item ) }, [])}
数组去重
/** * removeRe 数组去重 */Array.prototype.removeRe = function () { var _arr = this, _obj = {}; _arr.forEach(item => { _obj[item] = item; }) return Object.values(_obj);}