1.實(shí)現(xiàn)正則切分千分位(10000 => 10,000)
//無(wú)小數(shù)點(diǎn)
let num1 = '1321434322222'
num1.replace(/(\d)(?=(\d{3})+$)/g,'$1,')
//有小數(shù)點(diǎn)
let num2 = '342243242322.3432423'
num2.replace(/(\d)(?=(\d{3})+\.)/g,'$1,')
2.解決出現(xiàn)滾動(dòng)條時(shí) 下拉框 數(shù)據(jù)錯(cuò)位 問(wèn)題
//下拉框老速,單選框
getPopupContainer ={trigger => trigger.parentNode}
//時(shí)間選擇器
getCalendarContainer={trigger => trigger.parentNode}
3.數(shù)組扁平化的實(shí)現(xiàn)(flat)
let arr = [1,2,[3,4,[5,[6]]]]
console.log(arr.flat(Infinity))//flat參數(shù)為指定要提取嵌套數(shù)組的結(jié)構(gòu)深度慌洪,默認(rèn)值為 1
4.防抖節(jié)流:
//函數(shù)防抖
function dithering(callBack,ms){ var t = null; return function(){//這里是事件處理程序宛瞄,事件對(duì)象在這里傳遞 clearTimeout(t);
var arg = arguments;//這個(gè)arguments是當(dāng)前函數(shù)執(zhí)行環(huán)境下的arguments
t = setTimeout(function(){
callBack.apply(this,arg);
}.bind(this),ms); } }
//函數(shù)節(jié)流
function throttle(callBack,ms){
//有一個(gè)開(kāi)始時(shí)間
var startTime = new Date().getTime();
return function(){
//console.log(start);
//在input中開(kāi)始輸入的時(shí)候 也有一個(gè)時(shí)間
var nowTime = new Date().getTime();
if(nowTime - startTime >= ms){//相差1秒時(shí)間來(lái)執(zhí)行一次
callBack.apply(this,arguments);
startTime = nowTime;
}
}
}
5.手寫(xiě)深復(fù)制:
function deepCopy(obj){ //排除非引用數(shù)據(jù)類型和函數(shù) ,不是對(duì)象或是函數(shù)就直接返回
if(!(obj instanceof Object) || typeof obj === "function")
return obj; //程序走這里包含了函數(shù) 數(shù)組 和對(duì)象 //[] {}; //如果obj不是數(shù)組,就一定是對(duì)象灸眼,
//如果是數(shù)組newObj初始化為一個(gè)數(shù)組,反之為一個(gè)空對(duì)象,判斷obj是數(shù)組還是對(duì)象
var newObj = Array.isArray(obj) ? [] : {}; //for in遍歷
for(var key in obj){ //newObj[key] = obj[key]; //判斷obj[key]是否是一個(gè)數(shù)組或?qū)ο?
if(!!obj[key] && obj[key] instanceof Object){
newObj[key] = deepCopy(obj[key]);
}else{
newObj[key] = obj[key];
} }
return newObj;
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者