成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

前端開發(fā)實(shí)用工具類函數(shù)

ZoomQuiet / 2914人閱讀

摘要:獲取參數(shù)正則法調(diào)用參數(shù)名拆分法獲取中符后的字串調(diào)用參數(shù)參數(shù)參數(shù)參數(shù)參數(shù)參數(shù)參數(shù)參數(shù)參數(shù)參數(shù)參數(shù)參數(shù)后續(xù)會有更多實(shí)用工具函數(shù)。。。。。

抽空整理了一下日常開發(fā)中會經(jīng)常用到的工具函數(shù)

檢測是否是數(shù)組
export default const judgeArr=(arr)=>{
    if(Array.isArray(arr)){
        return true;
    }
}
數(shù)組的”短路運(yùn)算”every和some
情況一:全部滿足
 
export const allTrueArr=(arrs)=>{
  return arr.every((arr)=>{
     return arr>20;//如果數(shù)組的每一項都滿足則返回true,如果有一項不滿足返回false,終止遍歷
  })  
}
 
情況二:有一個滿足
export default const OneTrueArr=(arrs)=>{
  return arr.some((arr)=>{
     return arr>20;//如果數(shù)組有一項滿足則返回true,終止遍歷,每一項都不滿足則返回false
  })  
}
多維數(shù)組轉(zhuǎn)一維
// 遞歸
let newArr = [];

function flatten(arr) {
    for(let i = 0; i < arr.length; i++) {
        if(Array.isArray(arr[i])) {
            flatten(arr[i])
        } else {
            newArr.push(arr[i])
        }
    }
}

// reduce+遞歸
let arr = [1, [2, [[3, 4], 5], 6]];
const flatten = arr => arr.reduce((total,current) => {
    total.concat(Array.isArray(current) ? flatten(current) : current)
}, [])
獲取當(dāng)前的時間yyyy-MM-dd HH:mm:ss(沒有滿10就補(bǔ)0)
export default const obtainDate=()=>{
  let date = new Date();
  let year = date.getFullYear();
  let month = date.getMonth() + 1;
  let day=date.getDate();
  let hours=date.getHours();
  let minu=date.getMinutes();
  let second=date.getSeconds();
  //判斷是否滿10
  let arr=[month,day,hours,minu,second];
  arr.forEach(item=>{
    item< 10?"0"+item:item;
  })
  return year+"-"+arr[0]+"-"+arr[1]+" "+arr[2]+":"+arr[3]+":"+arr[4]      
}
函數(shù)防抖(debounce)和節(jié)流(throttle)
Debounce
原理:通過重復(fù)調(diào)用函數(shù),清空定時器,在函數(shù)不再被調(diào)用的時候觸發(fā)一次

function debounce(method,delay){
    var timer = null;
    return function(){
        vat _that = this;
        var args = arguments;
        clearTimeout(timer);
        timer = setTimeout(function(){
            method.apply(_that,args);
        },delay)
    }
}

Throttle
原理:通過判斷時間間隔、間隔一定的時間頻率調(diào)用函數(shù)

function throttle(fn,delay,duration){
    // fn 待執(zhí)行函數(shù) / delay 定時器延時時間 / duration 間隔時間
    var timer = null;
    var begin = +new Date();
    return function(){
        var _that = this;
        var now = +new Date();
        clearTimeout(timer);
        if(duration){
            if(now - begin >= duration){
                fn.apply(_that,arguments);
                begin = now;
            }
        } else {
            timer = setTimeout(fn,delay);
        }
    }
}
setTimeout(f, 0)

setTimeout的作用是將代碼推遲到指定時間執(zhí)行,如果指定時間為0,即setTimeout(f, 0),那么會立刻執(zhí)行嗎?

答案是不會。因為必須要等到當(dāng)前腳本的同步任務(wù),全部處理完以后,才會執(zhí)行setTimeout指定的回調(diào)函數(shù)f。也就是說,setTimeout(f, 0)會

在下一輪事件循環(huán)一開始就執(zhí)行。

setTimeout(function () {
  console.log(1);
}, 0);
console.log(2);
// 2
// 1

上面代碼先輸出2,再輸出1。因為2是同步任務(wù),在本輪事件循環(huán)執(zhí)行,而1是下一輪事件循環(huán)執(zhí)行。

總之,setTimeout(f, 0)這種寫法的目的是,盡可能早地執(zhí)行f(放在異步任務(wù)隊列的前面優(yōu)先執(zhí)行),但是并不能保證立刻就執(zhí)行f。

獲取url參數(shù)(QueryString)
正則法:

function getQueryString (name) {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)","i");
    var r = window.location.search.substr(1).match(reg);
    if (r != null) {
        return unescape(r[2]);
    }
    return null;
}
//調(diào)用
getQueryString ("參數(shù)名");

        OR

var getParam = function (name) {
    var search = document.location.search;
    //alert(search);
    var pattern = new RegExp("[?&]" + name + "=([^&]+)", "g");
    var matcher = pattern.exec(search);
    var items = null;
    if (null != matcher) {
        try {
            items = decodeURIComponent(decodeURIComponent(matcher[1]));
        } catch (e) {
            try {
                items = decodeURIComponent(matcher[1]);
            } catch (e) {
                items = matcher[1];
            }
        }
    }
    return items;
};

split拆分法:

function GetRequest() {
    var url = location.search; //獲取url中"?"符后的字串
    var theRequest = new Object();
    if (url.indexOf("?") != -1) {
        var str = url.substr(1);
        strs = str.split("&");
        for(var i = 0; i < strs.length; i ++) {
            theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);
        }
    }
    return theRequest;
}
var Request = new Object();
Request = GetRequest();

// 調(diào)用
// var 參數(shù)1,參數(shù)2,參數(shù)3,參數(shù)N;
// 參數(shù)1 = Request["參數(shù)1"];
// 參數(shù)2 = Request["參數(shù)2"];
// 參數(shù)3 = Request["參數(shù)3"];
// 參數(shù)N = Request["參數(shù)N"];

后續(xù)會有更多實(shí)用工具函數(shù)。。。。。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/97716.html

相關(guān)文章

  • 前端面試題(3)現(xiàn)代技術(shù)

    摘要:什么是單頁面應(yīng)用單頁面應(yīng)用是指用戶在瀏覽器加載單一的頁面,后續(xù)請求都無需再離開此頁目標(biāo)旨在用為用戶提供了更接近本地移動或桌面應(yīng)用程序的體驗。流程第一次請求時,將導(dǎo)航頁傳輸?shù)娇蛻舳?,其余請求通過獲取數(shù)據(jù)實(shí)現(xiàn)數(shù)據(jù)的傳輸通過或遠(yuǎn)程過程調(diào)用。 什么是單頁面應(yīng)用(SPA)? 單頁面應(yīng)用(SPA)是指用戶在瀏覽器加載單一的HTML頁面,后續(xù)請求都無需再離開此頁 目標(biāo):旨在用為用戶提供了更接近本地...

    EasonTyler 評論0 收藏0
  • 前端面試題(3)現(xiàn)代技術(shù)

    摘要:什么是單頁面應(yīng)用單頁面應(yīng)用是指用戶在瀏覽器加載單一的頁面,后續(xù)請求都無需再離開此頁目標(biāo)旨在用為用戶提供了更接近本地移動或桌面應(yīng)用程序的體驗。流程第一次請求時,將導(dǎo)航頁傳輸?shù)娇蛻舳?,其余請求通過獲取數(shù)據(jù)實(shí)現(xiàn)數(shù)據(jù)的傳輸通過或遠(yuǎn)程過程調(diào)用。 什么是單頁面應(yīng)用(SPA)? 單頁面應(yīng)用(SPA)是指用戶在瀏覽器加載單一的HTML頁面,后續(xù)請求都無需再離開此頁 目標(biāo):旨在用為用戶提供了更接近本地...

    trigkit4 評論0 收藏0
  • gitbook: 前端好書推薦

    摘要:它大致概述并討論了前端工程的實(shí)踐如何學(xué)習(xí)它,以及在年實(shí)踐時使用什么工具。目的是每年發(fā)布一次內(nèi)容更新。前端實(shí)踐第一部分廣泛描述了前端工程的實(shí)踐。對大多數(shù)人來說,函數(shù)式編程看起來更加自然。 1 Front-End Developer Handbook 2017 地址:https://frontendmasters.com/b... 這是任何人都可以用來了解前端開發(fā)實(shí)踐的指南。它大致概述并...

    Ali_ 評論0 收藏0
  • gitbook: 前端好書推薦

    摘要:它大致概述并討論了前端工程的實(shí)踐如何學(xué)習(xí)它,以及在年實(shí)踐時使用什么工具。目的是每年發(fā)布一次內(nèi)容更新。前端實(shí)踐第一部分廣泛描述了前端工程的實(shí)踐。對大多數(shù)人來說,函數(shù)式編程看起來更加自然。 1 Front-End Developer Handbook 2017 地址:https://frontendmasters.com/b... 這是任何人都可以用來了解前端開發(fā)實(shí)踐的指南。它大致概述并...

    CocoaChina 評論0 收藏0
  • gitbook: 前端好書推薦

    摘要:它大致概述并討論了前端工程的實(shí)踐如何學(xué)習(xí)它,以及在年實(shí)踐時使用什么工具。目的是每年發(fā)布一次內(nèi)容更新。前端實(shí)踐第一部分廣泛描述了前端工程的實(shí)踐。對大多數(shù)人來說,函數(shù)式編程看起來更加自然。 1 Front-End Developer Handbook 2017 地址:https://frontendmasters.com/b... 這是任何人都可以用來了解前端開發(fā)實(shí)踐的指南。它大致概述并...

    Warren 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<