js 将多维数组转为一维数组:
var arr = [1,[2,[[3,4],5],6]];
function unid(arr){
var arr1 = (arr + '').split(',');
var arr2 = arr1.map(function(x){
return Number(x);
});
return arr2;
}
console.log(unid(arr));
复制代码
防抖函数
tools.debounce = function (fn, delay = 300) {
let handle;
return function (e) {
clearTimeout(handle);
handle = setTimeout(() => {
fn(e);
}, delay);
}
}
复制代码
经过toString方法获取类型
tools.getType = (obj) => {
var type = '';
var typeArr = ['String', 'Object', 'Number', 'Array', 'Undefined', 'Function', 'Null', 'Symbol'];
for (var i = 0; i < typeArr.length; i++) {
if (Object.prototype.toString.call(obj) == '[object ' + typeArr[i] + ']') {
type = typeArr[i]
}
}
return type;
}
复制代码
数据深拷贝
tools.deepCopy = (p, c) => {
var c = c || {};
for (var i in p) {
if (typeof p[i] === 'object') {
if (p[i] === null) {
c[i] = null;
} else {
c[i] = (p[i].constructor === Array) ? [] : {};
tools.deepCopy(p[i], c[i]);
}
} else {
c[i] = p[i];
}
}
return c;
}
复制代码
设置本地存储和本地读取
tools.getStorage = key => {
const re = /^\[|\{|\}|\]$/g
let getIt = localStorage.getItem(key)
if (re.test(getIt)) {
return JSON.parse(getIt)
} else {
return getIt
}
}
tools.setStorage = (key, val) => {
if (typeof val == 'string') {
localStorage.setItem(key, val)
} else {
localStorage.setItem(key, JSON.stringify(val))
}
}
复制代码
获取多维数组的层级
function getArrTier(arr){
if (!Array.isArray(arr)) throw('type error')
let strArr = JSON.stringify(arr).split(']'),num = 0
for(let i = 0; i < strArr.length;i++){
let str2Arr = strArr[i].split('[')
if(num < str2Arr.length){
num = str2Arr.length
}
}
return num
}
复制代码