前端常用的實(shí)現(xiàn)方法

- - - - - -
1、郵箱 2、手機(jī)號(hào)碼 3、電話號(hào)碼 4、是否url地址 5、是否字符串 6、是否數(shù)字
7、是否booleam 8、是否函數(shù) 9、是否null 10、是否undefined 11、是否對(duì)象 12、是否數(shù)組
13、是否時(shí)間 14、是否正則 15、是否錯(cuò)誤對(duì)象 16、是否Symbol函數(shù) 17、是否Promise 18、是否Set對(duì)象
19、是否微信瀏覽器 20、是否移動(dòng)端 21、是否QQ瀏覽器 22、是否是爬蟲 23、是否ios 24、是否為PC端
25、去除html標(biāo)簽 26、獲取url參數(shù) 27、動(dòng)態(tài)引入js 28、跟據(jù)url地址下載 29、el是否包含某個(gè)class 30、el添加某個(gè)class
31、獲取滾動(dòng)的坐標(biāo) 32、獲取滾動(dòng)的坐標(biāo) 33、滾動(dòng)到頂部 34、el是否在視口范圍內(nèi) 35、洗牌算法隨機(jī) 36、劫持粘貼板
37、判斷類型集合 38、嚴(yán)格的身份證校驗(yàn) 39、隨機(jī)數(shù)范圍 40、將阿拉伯?dāng)?shù)字翻譯成中文的大寫數(shù)字 41、將數(shù)字轉(zhuǎn)換成大寫金額 42、判斷一個(gè)元素是否在數(shù)組中
43、數(shù)組排序 44、去重 45、求兩個(gè)集合的并集 46、求兩個(gè)集合的交集 47、刪除其中一個(gè)元素 48、將類數(shù)組轉(zhuǎn)換為數(shù)組
49、最大值 50、最小值 51、求和 52、平均值 53、去除空格 54、字符轉(zhuǎn)換
55、檢測(cè)密碼強(qiáng)度 56、函數(shù)節(jié)流器 57、在字符串中插入新的字符串 58、判斷兩個(gè)對(duì)象是否鍵值相同 59、16進(jìn)制顏色轉(zhuǎn)換 60、追加url參數(shù)

\color{rgb(26, 177, 204)}{1、郵箱}

export const isEmail = (s) => {
    return /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/.test(s)
}

\color{rgb(26, 177, 204)}{2、手機(jī)號(hào)碼}

export const isMobile = (s) => {
    return /^1[0-9]{10}$/.test(s)
}

\color{rgb(26, 177, 204)}{3、電話號(hào)碼}

export const isPhone = (s) => {
    return /^([0-9]{3,4}-)?[0-9]{7,8}$/.test(s)
}

\color{rgb(26, 177, 204)}{4、是否url地址}

export const isURL = (s) => {
    return /^http[s]?:\/\/.*/.test(s)
}

\color{rgb(26, 177, 204)}{5、是否字符串}

export const isString = (o) => {
    return Object.prototype.toString.call(o).slice(8, -1) === 'String'
}

\color{rgb(26, 177, 204)}{6、是否數(shù)字}

export const isNumber = (o) => {
    return Object.prototype.toString.call(o).slice(8, -1) === 'Number'
}

\color{rgb(26, 177, 204)}{7、是否boolean}


export const isBoolean = (o) => {
    return Object.prototype.toString.call(o).slice(8, -1) === 'Boolean'
}

\color{rgb(26, 177, 204)}{8、是否函數(shù)}

export const isFunction = (o) => {
    return Object.prototype.toString.call(o).slice(8, -1) === 'Function'
}

\color{rgb(26, 177, 204)}{9、是否為null}

export const isNull = (o) => {
    return Object.prototype.toString.call(o).slice(8, -1) === 'Null'
}

\color{rgb(26, 177, 204)}{10、是否undefined}

export const isUndefined = (o) => {
    return Object.prototype.toString.call(o).slice(8, -1) === 'Undefined'
}

\color{rgb(26, 177, 204)}{11、是否對(duì)象}

export const isObj = (o) => {
    return Object.prototype.toString.call(o).slice(8, -1) === 'Object'
}

\color{rgb(26, 177, 204)}{12、是否數(shù)組}

export const isArray = (o) => {
    return Object.prototype.toString.call(o).slice(8, -1) === 'Array'
}

\color{rgb(26, 177, 204)}{13、是否時(shí)間}

export const isDate = (o) => {
    return Object.prototype.toString.call(o).slice(8, -1) === 'Date'
}

\color{rgb(26, 177, 204)}{14、是否正則}

export const isRegExp = (o) => {
    return Object.prototype.toString.call(o).slice(8, -1) === 'RegExp'
}

\color{rgb(26, 177, 204)}{15、是否錯(cuò)誤對(duì)象}

export const isError = (o) => {
    return Object.prototype.toString.call(o).slice(8, -1) === 'Error'
}

\color{rgb(26, 177, 204)}{16、是否Symbol函數(shù)}

export const isSymbol = (o) => {
    return Object.prototype.toString.call(o).slice(8, -1) === 'Symbol'
}

\color{rgb(26, 177, 204)}{17、是否Promise對(duì)象}

export const isPromise = (o) => {
    return Object.prototype.toString.call(o).slice(8, -1) === 'Promise'
}

\color{rgb(26, 177, 204)}{18、是否Set對(duì)象}

export const isSet = (o) => {  
    return Object.prototype.toString.call(o).slice(8, -1) === 'Set'
}

export const ua = navigator.userAgent.toLowerCase();

\color{rgb(26, 177, 204)}{19、是否是微信瀏覽器}

export const isWeiXin = () => {
    return ua.match(/microMessenger/i) == 'micromessenger'
}

\color{rgb(26, 177, 204)}{20、是否是移動(dòng)端}

export const isDeviceMobile = () => { 
    return /android|webos|iphone|ipod|balckberry/i.test(ua)
}

\color{rgb(26, 177, 204)}{21、是否是QQ瀏覽器}

export const isQQBrowser = () => {
    return !!ua.match(/mqqbrowser|qzone|qqbrowser|qbwebviewtype/i)
}

\color{rgb(26, 177, 204)}{22、是否是爬蟲}

export const isSpider = () => {
    return /adsbot|googlebot|bingbot|msnbot|yandexbot|baidubot|robot|careerbot|seznambot|bot|baiduspider|jikespider|symantecspider|scannerlwebcrawler|crawler|360spider|sosospider|sogou web sprider|sogou orion spider/.test(ua)
}

\color{rgb(26, 177, 204)}{23、是否ios}

export const isIos = () => {
    var u = navigator.userAgent;
    if (u.indexOf('Android') > -1 || u.indexOf('Linux') > -1) {  //安卓手機(jī)
        return false
    } else if (u.indexOf('iPhone') > -1) {//蘋果手機(jī)
        return true
    } else if (u.indexOf('iPad') > -1) {//iPad
        return false
    } else if (u.indexOf('Windows Phone') > -1) {//winphone手機(jī)
        return false
    } else {
        return false
    }
}

\color{rgb(26, 177, 204)}{24、是否為PC端}

export const isPC = () => {
    var userAgentInfo = navigator.userAgent;
    var Agents = ["Android", "iPhone",
        "SymbianOS", "Windows Phone",
        "iPad", "iPod"];
    var flag = true;
    for (var v = 0; v < Agents.length; v++) {
        if (userAgentInfo.indexOf(Agents[v]) > 0) {
            flag = false;
            break;
        }
    }
    return flag;
}

\color{rgb(26, 177, 204)}{25、去除html標(biāo)簽}

export const removehtmltag = (str) => {
    return str.replace(/<[^>]+>/g, '')
}

\color{rgb(26, 177, 204)}{26、獲取url參數(shù)}

export const getQueryString = (name) => {
    const reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
    const search = window.location.search.split('?')[1] || '';
    const r = search.match(reg) || [];
    return r[2];
}

\color{rgb(26, 177, 204)}{27、動(dòng)態(tài)引入js}

export const injectScript = (src) => {
    const s = document.createElement('script');
    s.type = 'text/JavaScript';
    s.async = true;
    s.src = src;
    const t = document.getElementsByTagName('script')[0];
    t.parentNode.insertBefore(s, t);
}

\color{rgb(26, 177, 204)}{28、根據(jù)url地址下載}

export const download = (url) => {
    var isChrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
    var isSafari = navigator.userAgent.toLowerCase().indexOf('safari') > -1;
    if (isChrome || isSafari) {
        var link = document.createElement('a');
        link.href = url;
        if (link.download !== undefined) {
            var fileName = url.substring(url.lastIndexOf('/') + 1, url.length);
            link.download = fileName;
        }
        if (document.createEvent) {
            var e = document.createEvent('MouseEvents');
            e.initEvent('click', true, true);
            link.dispatchEvent(e);
            return true;
        }
    }
    if (url.indexOf('?') === -1) {
        url += '?download';
    }
    window.open(url, '_self');
    return true;
}

\color{rgb(26, 177, 204)}{29、el是否包含某個(gè)class}

export const hasClass = (el, className) => {
    let reg = new RegExp('(^|\\s)' + className + '(\\s|$)')
    return reg.test(el.className)
}

\color{rgb(26, 177, 204)}{30、el添加某個(gè)class}

export const addClass = (el, className) => {
    if (hasClass(el, className)) {
        return
    }
    let newClass = el.className.split(' ')
    newClass.push(className)
    el.className = newClass.join(' ')
}

\color{rgb(26, 177, 204)}{31、el去除某個(gè)class}

export const removeClass = (el, className) => {
    if (!hasClass(el, className)) {
        return
    }
    let reg = new RegExp('(^|\\s)' + className + '(\\s|$)', 'g')
    el.className = el.className.replace(reg, ' ')
}

\color{rgb(26, 177, 204)}{32、獲取滾動(dòng)的坐標(biāo)}

export const getScrollPosition = (el = window) => ({
    x: el.pageXOffset !== undefined ? el.pageXOffset : el.scrollLeft,
    y: el.pageYOffset !== undefined ? el.pageYOffset : el.scrollTop
});

\color{rgb(26, 177, 204)}{33、滾動(dòng)到頂部}

export const scrollToTop = () => {
    const c = document.documentElement.scrollTop || document.body.scrollTop;
    if (c > 0) {
        window.requestAnimationFrame(scrollToTop);
        window.scrollTo(0, c - c / 8);
    }
}

\color{rgb(26, 177, 204)}{34、el是否在視口范圍內(nèi)}

export const elementIsVisibleInViewport = (el, partiallyVisible = false) => {
    const { top, left, bottom, right } = el.getBoundingClientRect();
    const { innerHeight, innerWidth } = window;
    return partiallyVisible
        ? ((top > 0 && top < innerHeight) || (bottom > 0 && bottom < innerHeight)) &&
        ((left > 0 && left < innerWidth) || (right > 0 && right < innerWidth))
        : top >= 0 && left >= 0 && bottom <= innerHeight && right <= innerWidth;
}

\color{rgb(26, 177, 204)}{35、洗牌算法隨機(jī)}

export const shuffle = (arr) => {
    var result = [],
        random;
    while (arr.length > 0) {
        random = Math.floor(Math.random() * arr.length);
        result.push(arr[random])
        arr.splice(random, 1)
    }
    return result;
}

\color{rgb(26, 177, 204)}{36、劫持粘貼板}

export const copyTextToClipboard = (value) => {
    var textArea = document.createElement("textarea");
    textArea.style.background = 'transparent';
    textArea.value = value;
    document.body.appendChild(textArea);
    textArea.select();
    try {
        var successful = document.execCommand('copy');
    } catch (err) {
        console.log('Oops, unable to copy');
    }
    document.body.removeChild(textArea);
}

\color{rgb(26, 177, 204)}{37、判斷類型集合}

export const checkStr = (str, type) => {
    switch (type) {
        case 'phone':   //手機(jī)號(hào)碼
            return /^1[3|4|5|6|7|8|9][0-9]{9}$/.test(str);
        case 'tel':     //座機(jī)
            return /^(0\d{2,3}-\d{7,8})(-\d{1,4})?$/.test(str);
        case 'card':    //身份證
            return /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(str);
        case 'pwd':     //密碼以字母開(kāi)頭,長(zhǎng)度在6~18之間,只能包含字母、數(shù)字和下劃線
            return /^[a-zA-Z]\w{5,17}$/.test(str)
        case 'postal':  //郵政編碼
            return /[1-9]\d{5}(?!\d)/.test(str);
        case 'QQ':      //QQ號(hào)
            return /^[1-9][0-9]{4,9}$/.test(str);
        case 'email':   //郵箱
            return /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/.test(str);
        case 'money':   //金額(小數(shù)點(diǎn)2位)
            return /^\d*(?:\.\d{0,2})?$/.test(str);
        case 'URL':     //網(wǎng)址
            return /(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/.test(str)
        case 'IP':      //IP
            return /((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))/.test(str);
        case 'date':    //日期時(shí)間
            return /^(\d{4})\-(\d{2})\-(\d{2}) (\d{2})(?:\:\d{2}|:(\d{2}):(\d{2}))$/.test(str) || /^(\d{4})\-(\d{2})\-(\d{2})$/.test(str)
        case 'number':  //數(shù)字
            return /^[0-9]$/.test(str);
        case 'english': //英文
            return /^[a-zA-Z]+$/.test(str);
        case 'chinese': //中文
            return /^[\\u4E00-\\u9FA5]+$/.test(str);
        case 'lower':   //小寫
            return /^[a-z]+$/.test(str);
        case 'upper':   //大寫
            return /^[A-Z]+$/.test(str);
        case 'HTML':    //HTML標(biāo)記
            return /<("[^"]*"|'[^']*'|[^'">])*>/.test(str);
        default:
            return true;
    }
}

\color{rgb(26, 177, 204)}{38、嚴(yán)格的身份證校驗(yàn)}

export const isCardID = (sId) => {
    if (!/(^\d{15}$)|(^\d{17}(\d|X|x)$)/.test(sId)) {
        console.log('你輸入的身份證長(zhǎng)度或格式錯(cuò)誤')
        return false
    }
    //身份證城市
    var aCity = { 11: "北京", 12: "天津", 13: "河北", 14: "山西", 15: "內(nèi)蒙古", 21: "遼寧", 22: "吉林", 23: "黑龍江", 31: "上海", 32: "江蘇", 33: "浙江", 34: "安徽", 35: "福建", 36: "江西", 37: "山東", 41: "河南", 42: "湖北", 43: "湖南", 44: "廣東", 45: "廣西", 46: "海南", 50: "重慶", 51: "四川", 52: "貴州", 53: "云南", 54: "西藏", 61: "陜西", 62: "甘肅", 63: "青海", 64: "寧夏", 65: "新疆", 71: "臺(tái)灣", 81: "香港", 82: "澳門", 91: "國(guó)外" };
    if (!aCity[parseInt(sId.substr(0, 2))]) {
        console.log('你的身份證地區(qū)非法')
        return false
    }

    // 出生日期驗(yàn)證
    var sBirthday = (sId.substr(6, 4) + "-" + Number(sId.substr(10, 2)) + "-" + Number(sId.substr(12, 2))).replace(/-/g, "/"),
        d = new Date(sBirthday)
    if (sBirthday != (d.getFullYear() + "/" + (d.getMonth() + 1) + "/" + d.getDate())) {
        console.log('身份證上的出生日期非法')
        return false
    }

    // 身份證號(hào)碼校驗(yàn)
    var sum = 0,
        weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2],
        codes = "10X98765432"
    for (var i = 0; i < sId.length - 1; i++) {
        sum += sId[i] * weights[i];
    }
    var last = codes[sum % 11]; //計(jì)算出來(lái)的最后一位身份證號(hào)碼
    if (sId[sId.length - 1] != last) {
        console.log('你輸入的身份證號(hào)非法')
        return false
    }

    return true
}

\color{rgb(26, 177, 204)}{39、隨機(jī)數(shù)范圍}

export const random = (min, max) => {
    if (arguments.length === 2) {
        return Math.floor(min + Math.random() * ((max + 1) - min))
    } else {
        return null;
    }
}

\color{rgb(26, 177, 204)}{40、將阿拉伯?dāng)?shù)字翻譯成中文的大寫數(shù)字}

export const numberToChinese = (num) => {
    var AA = new Array("零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十");
    var BB = new Array("", "十", "百", "仟", "萬(wàn)", "億", "點(diǎn)", "");
    var a = ("" + num).replace(/(^0*)/g, "").split("."),
        k = 0,
        re = "";
    for (var i = a[0].length - 1; i >= 0; i--) {
        switch (k) {
            case 0:
                re = BB[7] + re;
                break;
            case 4:
                if (!new RegExp("0{4}//d{" + (a[0].length - i - 1) + "}$")
                    .test(a[0]))
                    re = BB[4] + re;
                break;
            case 8:
                re = BB[5] + re;
                BB[7] = BB[5];
                k = 0;
                break;
        }
        if (k % 4 == 2 && a[0].charAt(i + 2) != 0 && a[0].charAt(i + 1) == 0)
            re = AA[0] + re;
        if (a[0].charAt(i) != 0)
            re = AA[a[0].charAt(i)] + BB[k % 4] + re;
        k++;
    }

    if (a.length > 1) // 加上小數(shù)部分(如果有小數(shù)部分)
    {
        re += BB[6];
        for (var i = 0; i < a[1].length; i++)
            re += AA[a[1].charAt(i)];
    }
    if (re == '一十')
        re = "十";
    if (re.match(/^一/) && re.length == 3)
        re = re.replace("一", "");
    return re;
}

\color{rgb(26, 177, 204)}{41、將數(shù)字轉(zhuǎn)換為大寫金額}

export const changeToChinese = (Num) => {
    //判斷如果傳遞進(jìn)來(lái)的不是字符的話轉(zhuǎn)換為字符
    if (typeof Num == "number") {
        Num = new String(Num);
    };
    Num = Num.replace(/,/g, "") //替換tomoney()中的“,”
    Num = Num.replace(/ /g, "") //替換tomoney()中的空格
    Num = Num.replace(/¥/g, "") //替換掉可能出現(xiàn)的¥字符
    if (isNaN(Num)) { //驗(yàn)證輸入的字符是否為數(shù)字
        //alert("請(qǐng)檢查小寫金額是否正確");
        return "";
    };
    //字符處理完畢后開(kāi)始轉(zhuǎn)換,采用前后兩部分分別轉(zhuǎn)換
    var part = String(Num).split(".");
    var newchar = "";
    //小數(shù)點(diǎn)前進(jìn)行轉(zhuǎn)化
    for (var i = part[0].length - 1; i >= 0; i--) {
        if (part[0].length > 10) {
            return "";
            //若數(shù)量超過(guò)拾億單位,提示
        }
        var tmpnewchar = ""
        var perchar = part[0].charAt(i);
        switch (perchar) {
            case "0":
                tmpnewchar = "零" + tmpnewchar;
                break;
            case "1":
                tmpnewchar = "壹" + tmpnewchar;
                break;
            case "2":
                tmpnewchar = "貳" + tmpnewchar;
                break;
            case "3":
                tmpnewchar = "叁" + tmpnewchar;
                break;
            case "4":
                tmpnewchar = "肆" + tmpnewchar;
                break;
            case "5":
                tmpnewchar = "伍" + tmpnewchar;
                break;
            case "6":
                tmpnewchar = "陸" + tmpnewchar;
                break;
            case "7":
                tmpnewchar = "柒" + tmpnewchar;
                break;
            case "8":
                tmpnewchar = "捌" + tmpnewchar;
                break;
            case "9":
                tmpnewchar = "玖" + tmpnewchar;
                break;
        }
        switch (part[0].length - i - 1) {
            case 0:
                tmpnewchar = tmpnewchar + "元";
                break;
            case 1:
                if (perchar != 0) tmpnewchar = tmpnewchar + "拾";
                break;
            case 2:
                if (perchar != 0) tmpnewchar = tmpnewchar + "佰";
                break;
            case 3:
                if (perchar != 0) tmpnewchar = tmpnewchar + "仟";
                break;
            case 4:
                tmpnewchar = tmpnewchar + "萬(wàn)";
                break;
            case 5:
                if (perchar != 0) tmpnewchar = tmpnewchar + "拾";
                break;
            case 6:
                if (perchar != 0) tmpnewchar = tmpnewchar + "佰";
                break;
            case 7:
                if (perchar != 0) tmpnewchar = tmpnewchar + "仟";
                break;
            case 8:
                tmpnewchar = tmpnewchar + "億";
                break;
            case 9:
                tmpnewchar = tmpnewchar + "拾";
                break;
        }
        var newchar = tmpnewchar + newchar;
    }
    //小數(shù)點(diǎn)之后進(jìn)行轉(zhuǎn)化
    if (Num.indexOf(".") != -1) {
        if (part[1].length > 2) {
            // alert("小數(shù)點(diǎn)之后只能保留兩位,系統(tǒng)將自動(dòng)截?cái)?);
            part[1] = part[1].substr(0, 2)
        }
        for (i = 0; i < part[1].length; i++) {
            tmpnewchar = ""
            perchar = part[1].charAt(i)
            switch (perchar) {
                case "0":
                    tmpnewchar = "零" + tmpnewchar;
                    break;
                case "1":
                    tmpnewchar = "壹" + tmpnewchar;
                    break;
                case "2":
                    tmpnewchar = "貳" + tmpnewchar;
                    break;
                case "3":
                    tmpnewchar = "叁" + tmpnewchar;
                    break;
                case "4":
                    tmpnewchar = "肆" + tmpnewchar;
                    break;
                case "5":
                    tmpnewchar = "伍" + tmpnewchar;
                    break;
                case "6":
                    tmpnewchar = "陸" + tmpnewchar;
                    break;
                case "7":
                    tmpnewchar = "柒" + tmpnewchar;
                    break;
                case "8":
                    tmpnewchar = "捌" + tmpnewchar;
                    break;
                case "9":
                    tmpnewchar = "玖" + tmpnewchar;
                    break;
            }
            if (i == 0) tmpnewchar = tmpnewchar + "角";
            if (i == 1) tmpnewchar = tmpnewchar + "分";
            newchar = newchar + tmpnewchar;
        }
    }
    //替換所有無(wú)用漢字
    while (newchar.search("零零") != -1)
        newchar = newchar.replace("零零", "零");
    newchar = newchar.replace("零億", "億");
    newchar = newchar.replace("億萬(wàn)", "億");
    newchar = newchar.replace("零萬(wàn)", "萬(wàn)");
    newchar = newchar.replace("零元", "元");
    newchar = newchar.replace("零角", "");
    newchar = newchar.replace("零分", "");
    if (newchar.charAt(newchar.length - 1) == "元") {
        newchar = newchar + "整"
    }
    return newchar;
}

\color{rgb(26, 177, 204)}{42、判斷一個(gè)元素是否在數(shù)組中}

export const contains = (arr, val) => {
    return arr.indexOf(val) != -1 ? true : false;
}

\color{rgb(26, 177, 204)}{43、數(shù)組排序,{type} 1:從小到大 2:從大到小 3:隨機(jī)}

export const sort = (arr, type = 1) => {
    return arr.sort((a, b) => {
        switch (type) {
            case 1:
                return a - b;
            case 2:
                return b - a;
            case 3:
                return Math.random() - 0.5;
            default:
                return arr;
        }
    })
}

\color{rgb(26, 177, 204)}{44、去重}

export const unique = (arr) => {
    if (Array.hasOwnProperty('from')) {
        return Array.from(new Set(arr));
    } else {
        var n = {}, r = [];
        for (var i = 0; i < arr.length; i++) {
            if (!n[arr[i]]) {
                n[arr[i]] = true;
                r.push(arr[i]);
            }
        }
        return r;
    }
}

\color{rgb(26, 177, 204)}{45、求兩個(gè)集合的并集}

export const union = (a, b) => {
    var newArr = a.concat(b);
    return this.unique(newArr);
}

\color{rgb(26, 177, 204)}{46、求兩個(gè)集合的交集}

export const intersect = (a, b) => {
    var _this = this;
    a = this.unique(a);
    return this.map(a, function (o) {
        return _this.contains(b, o) ? o : null;
    });
}

\color{rgb(26, 177, 204)}{47、刪除其中一個(gè)元素}

export const remove = (arr, ele) => {
    var index = arr.indexOf(ele);
    if (index > -1) {
        arr.splice(index, 1);
    }
    return arr;
}

\color{rgb(26, 177, 204)}{48、將類數(shù)組轉(zhuǎn)換為數(shù)組}

export const formArray = (ary) => {
    var arr = [];
    if (Array.isArray(ary)) {
        arr = ary;
    } else {
        arr = Array.prototype.slice.call(ary);
    };
    return arr;
}

\color{rgb(26, 177, 204)}{49、最大值}

export const max = (arr) => {
    return Math.max.apply(null, arr);
}

\color{rgb(26, 177, 204)}{50、最小值}

export const min = (arr) => {
    return Math.min.apply(null, arr);
}

\color{rgb(26, 177, 204)}{51、求和}

export const sum = (arr) => {
    return arr.reduce((pre, cur) => {
        return pre + cur
    })
}

\color{rgb(26, 177, 204)}{52、平均值}

export const average = (arr) => {
    return this.sum(arr) / arr.length
}

\color{rgb(26, 177, 204)}{53、去除空格,type: 1-所有空格 2-前后空格 3-前空格 4-后空格}

export const trim = (str, type) => {
    type = type || 1
    switch (type) {
        case 1:
            return str.replace(/\s+/g, "");
        case 2:
            return str.replace(/(^\s*)|(\s*$)/g, "");
        case 3:
            return str.replace(/(^\s*)/g, "");
        case 4:
            return str.replace(/(\s*$)/g, "");
        default:
            return str;
    }
}

\color{rgb(26, 177, 204)}{54、字符轉(zhuǎn)換,type: 1:首字母大寫 2:首字母小寫 3:大小寫轉(zhuǎn)換 4:全部大寫 5:全部小寫}

export const changeCase = (str, type) => {
    type = type || 4
    switch (type) {
        case 1:
            return str.replace(/\b\w+\b/g, function (word) {
                return word.substring(0, 1).toUpperCase() + word.substring(1).toLowerCase();

            });
        case 2:
            return str.replace(/\b\w+\b/g, function (word) {
                return word.substring(0, 1).toLowerCase() + word.substring(1).toUpperCase();
            });
        case 3:
            return str.split('').map(function (word) {
                if (/[a-z]/.test(word)) {
                    return word.toUpperCase();
                } else {
                    return word.toLowerCase()
                }
            }).join('')
        case 4:
            return str.toUpperCase();
        case 5:
            return str.toLowerCase();
        default:
            return str;
    }
}

\color{rgb(26, 177, 204)}{55、檢測(cè)密碼強(qiáng)度}

export const checkPwd = (str) => {
    var Lv = 0;
    if (str.length < 6) {
        return Lv
    }
    if (/[0-9]/.test(str)) {
        Lv++
    }
    if (/[a-z]/.test(str)) {
        Lv++
    }
    if (/[A-Z]/.test(str)) {
        Lv++
    }
    if (/[\.|-|_]/.test(str)) {
        Lv++
    }
    return Lv;
}

\color{rgb(26, 177, 204)}{56、函數(shù)節(jié)流器}

export const debouncer = (fn, time, interval = 200) => {
    if (time - (window.debounceTimestamp || 0) > interval) {
        fn && fn();
        window.debounceTimestamp = time;
    }
}

\color{rgb(26, 177, 204)}{57、在字符串中插入新字符串}

export const insertStr = (soure, index, newStr) => {
    var str = soure.slice(0, index) + newStr + soure.slice(index);
    return str;
}

\color{rgb(26, 177, 204)}{58、判斷兩個(gè)對(duì)象是否鍵值相同}

export const isObjectEqual = (a, b) => {
    var aProps = Object.getOwnPropertyNames(a);
    var bProps = Object.getOwnPropertyNames(b);

    if (aProps.length !== bProps.length) {
        return false;
    }

    for (var i = 0; i < aProps.length; i++) {
        var propName = aProps[i];

        if (a[propName] !== b[propName]) {
            return false;
        }
    }
    return true;
}

\color{rgb(26, 177, 204)}{59、16進(jìn)制顏色轉(zhuǎn)RGBRGBA字符串}

export const colorToRGB = (val, opa) => {

    var pattern = /^(#?)[a-fA-F0-9]{6}$/; //16進(jìn)制顏色值校驗(yàn)規(guī)則
    var isOpa = typeof opa == 'number'; //判斷是否有設(shè)置不透明度

    if (!pattern.test(val)) { //如果值不符合規(guī)則返回空字符
        return '';
    }

    var v = val.replace(/#/, ''); //如果有#號(hào)先去除#號(hào)
    var rgbArr = [];
    var rgbStr = '';

    for (var i = 0; i < 3; i++) {
        var item = v.substring(i * 2, i * 2 + 2);
        var num = parseInt(item, 16);
        rgbArr.push(num);
    }

    rgbStr = rgbArr.join();
    rgbStr = 'rgb' + (isOpa ? 'a' : '') + '(' + rgbStr + (isOpa ? ',' + opa : '') + ')';
    return rgbStr;
}

\color{rgb(26, 177, 204)}{60、追加url參數(shù)}

export const appendQuery = (url, key, value) => {
    var options = key;
    if (typeof options == 'string') {
        options = {};
        options[key] = value;
    }
    options = $.param(options);
    if (url.includes('?')) {
        url += '&' + options
    } else {
        url += '?' + options
    }
    return url;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容