亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

JavaScript 工具類

CastlePeaK / 2979人閱讀

摘要:在此給出一個(gè)我經(jīng)常用到的數(shù)據(jù)去重方案。數(shù)組去重利用對(duì)象的特性對(duì)象中是否存在該屬性數(shù)字類型的數(shù)組最大值數(shù)字類型的數(shù)組最小值格式化距現(xiàn)在的已過時(shí)間年前個(gè)月前天前小時(shí)前分鐘前剛剛格式化現(xiàn)在距的剩余時(shí)間天小時(shí)分鐘秒未完待補(bǔ)充

整理常用的工具類,提高編碼效率
正則

整理日常使用較多的用戶名,密碼,強(qiáng)密碼,手機(jī)號(hào),郵箱,身份證號(hào),QQ以及微信號(hào)的驗(yàn)證

class _Regexp {
    /**
     * 用戶名, 4到16位(字母,數(shù)字,下劃線,減號(hào))
     * @param {String} str 
     */
    isUser(str) {
        return /^[a-zA-Z0-9_-]{4,16}$/.test(str)
    }

    /**
     * 密碼, 以字母開頭,長(zhǎng)度在6~18之間,只能包含字母、數(shù)字和下劃線
     * @param {String} str 
     */
    isPassword() {
        return /^[a-zA-Z]w{5,17}$/.test(str)
    }

    /**
     * 強(qiáng)密碼, 最少6位,至少1個(gè)大寫字母,1個(gè)小寫字母,1個(gè)數(shù)字,1個(gè)特殊字符
     * @param {String} str
     */
    isStrongPassword(str) {
        return /^.*(?=.{6,})(?=.*d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*?]).*$/.test(str)
    }

    /**
     * 手機(jī)號(hào)
     * @param {String} str 
     */
    isPhone(str) {
        return /^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]))d{8}$/.test(str)
    }

    /**
     * 郵箱
     * @param {String} str 
     */
    isEmail(str) {
        return /^([A-Za-z0-9_-.])+@([A-Za-z0-9_-.])+.([A-Za-z]{2,4})$/.test(str)
    }

    /**
     * 身份證號(hào)
     * @param {String} str 
     */
    isIdCard(str) {
        return /^[1-9]d{5}(18|19|([23]d))d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)d{3}[0-9Xx]$/.test(str)
    }

    /**
     * QQ, 5-11位
     * @param {String} str 
     */
    isQQ(str) {
        return /^[1-9][0-9]{4,10}$/.test(str)
    }

    /**
     * 微信, 6-20位,以字母開頭,(字母,數(shù)字,減號(hào),下劃線)
     * @param {String} str 
     */
    isWeChart(str) {
        return /^[a-zA-Z]([-_a-zA-Z0-9]{5,19})+$/.test(str)
    }
}
字符串

整理字符串去除所有空格,隨機(jī)密碼以及如何檢測(cè)密碼強(qiáng)度

class _String {
    /**
     * 去除字符串中所有空格
     * @param {String} str 
     */
    trimAll(str) {
        return str.replace(/s+/g, "")
    }

    /**
     * 隨機(jī)碼, randomPassword(36) -> h9q9b4mytk
     * @param {Number} count 
     */
    randomPassword(count) {
        return Math.random().toString(count).substring(2)
    }

    /**
     * 檢測(cè)密碼強(qiáng)度
     * @param {String} str 
     */
    checkPassword(str) {
        let level = 0
        if (str.length < 6) {
            return level
        }
        if (/[0-9]/.test(str)) {
            level ++
        }
        if (/[a-z]/.test(str)) {
            level ++
        }
        if (/[A-Z]/.test(str)) {
            level ++
        }
        if (/[.|_]/.test(str)) {
            level ++
        }
        return level
    }
}
數(shù)組

數(shù)組去重,網(wǎng)上有很多種用法,比如使用indexOf,splice以及ES6種set的新特性。在此給出一個(gè)我經(jīng)常用到的數(shù)據(jù)去重方案。

class _Array {
    /**
     * 數(shù)組去重, 利用對(duì)象的特性
     * @param {Array} old_arr 
     */
    removeRepeat(old_arr) {
        let new_arr = []
        let obj = {}
        for (let i = 0, len = old_arr.length; i < len; i++) {
            // 對(duì)象中是否存在該屬性
            if (!obj[old_arr[i]]) {
                new_arr.push(old_arr[i])
                obj[old_arr[i]] = i
            }
        }
        return new_arr
    }

    /**
     * 數(shù)字類型的數(shù)組最大值
     * @param {Array} arr 
     */
    maxArr(arr) {
        return Math.max.apply(null, arr)
    }

    /**
     * 數(shù)字類型的數(shù)組最小值
     * @param {Array} arr 
     */
    minArr(arr) {
        return Math.min.apply(null, arr)
    }
}
Date
class _Date {
    /**
     * 格式化${startTime}距現(xiàn)在的已過時(shí)間
     * @param {Date} startTime 
     */
    formatPassTime(startTime) {
        let currentTime = Date.parse(new Date())
        let time = currentTime - startTime
        let day = parseInt(time / (1000 * 60 * 60 * 24))
        let hour = parseInt(time / (1000 * 60 * 60))
        let min = parseInt(time / (1000 * 60))
        let month = parseInt(day / 30)
        let year = parseInt(month / 12)

        if (year) {
            return year + "年前"
        }
        if (month) {
            return month + "個(gè)月前"
        }
        if (day) {
            return day + "天前"
        }
        if (hour) {
            return hour + "小時(shí)前"
        }
        if (min) {
            return min + "分鐘前"
        } else {
            return "剛剛"
        }
    }

    /**
     * 格式化現(xiàn)在距${endTime}的剩余時(shí)間
     * @param {Date} endTime 
     */
    formatRemainTime(endTime) {
        let startDate = new Date()
        let endDate = new Date(endTime)
        let t = endDate.getTime() - startDate.getTime()
    
        let d = 0
        let h = 0
        let m = 0
        let s = 0
    
        if (t >= 0) {
            d = Math.floor(t / 1000 / 3600 / 24)
            h = Math.floor(t / 1000 / 60 / 60 % 24)
            m = Math.floor(t / 1000 / 60 % 60)
            s = Math.floor(t / 1000 % 60)
        }
    
        return d + "天 " + h + "小時(shí) " + m + "分鐘 " + s + "秒"
    }
}
Object
var type = function(o) {
  var s = Object.prototype.toString.call(o);
  return s.match(/[object (.*?)]/)[1].toLowerCase();
};

["Null",
 "Undefined",
 "Object",
 "Array",
 "String",
 "Number",
 "Boolean",
 "Function",
 "RegExp"
].forEach(function(t) {
  type["is" + t] = function(value) {
    return type(value) === t.toLowerCase();
  };
});

type.isObject({})      // true
type.isNumber(NaN)     // true

未完待補(bǔ)充

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/97330.html

相關(guān)文章

  • 2017年前端框架、庫、工具大比拼

    摘要:相比于開發(fā)人員的數(shù)量,目前框架類庫和工具的數(shù)量似乎更多一些。本文將會(huì)討論目前最為流行的客戶端框架類庫和工具以及它們之間的基本差異。典型的類庫包括字符串處理日期元素事件動(dòng)畫網(wǎng)絡(luò)請(qǐng)求等功能。所以不需要明確的區(qū)分類庫框架和工具。 相比于JavaScript開發(fā)人員的數(shù)量,目前JavaScript框架、類庫和工具的數(shù)量似乎更多一些。截至2017年5月,GitHub上的快速搜索顯示,有超過110...

    Alliot 評(píng)論0 收藏0
  • 前端資源系列(4)-前端學(xué)習(xí)資源分享&前端面試資源匯總

    摘要:特意對(duì)前端學(xué)習(xí)資源做一個(gè)匯總,方便自己學(xué)習(xí)查閱參考,和好友們共同進(jìn)步。 特意對(duì)前端學(xué)習(xí)資源做一個(gè)匯總,方便自己學(xué)習(xí)查閱參考,和好友們共同進(jìn)步。 本以為自己收藏的站點(diǎn)多,可以很快搞定,沒想到一入?yún)R總深似海。還有很多不足&遺漏的地方,歡迎補(bǔ)充。有錯(cuò)誤的地方,還請(qǐng)斧正... 托管: welcome to git,歡迎交流,感謝star 有好友反應(yīng)和斧正,會(huì)及時(shí)更新,平時(shí)業(yè)務(wù)工作時(shí)也會(huì)不定期更...

    princekin 評(píng)論0 收藏0
  • JavaScript 設(shè)計(jì)模式讀書筆記(五)——工廠模式

    摘要:假設(shè)有一個(gè)生產(chǎn)交通工具的工廠類,它包含生成多種交通工具實(shí)例的方法。在使用這個(gè)類生產(chǎn)對(duì)象的時(shí)候,傳入?yún)?shù),在參數(shù)中的屬性規(guī)定我們需要的類型,構(gòu)造函數(shù)就能夠返回我們需要的對(duì)象類型了。 一般來說,創(chuàng)建對(duì)象的時(shí)候我們都習(xí)慣使用new關(guān)鍵字來調(diào)用constructor構(gòu)造函數(shù),但使用這種方式會(huì)有一些缺點(diǎn),首先構(gòu)造器函數(shù)的創(chuàng)建本身就是為了模仿其他一些面向?qū)ο笳Z言的特性,有些人覺得這是non-sen...

    Eirunye 評(píng)論0 收藏0
  • React全棧--現(xiàn)代前端技術(shù)

    摘要:類的數(shù)據(jù)類型就是函數(shù),類本身就指向構(gòu)造函數(shù)。另一個(gè)需要注意的地方是,在子類的構(gòu)造函數(shù)中,只有調(diào)用之后,才可以使用關(guān)鍵字,否則會(huì)報(bào)錯(cuò)。 1.ES6-- 新一代JavaScript標(biāo)準(zhǔn) 1.1 const和let關(guān)鍵字 以前只有全局變量以及函數(shù)內(nèi)部的局部變量,所以以前的局部變量只能定義在函數(shù)里面,但是現(xiàn)在不是了,可以通過let關(guān)鍵字來定義局部變量。同時(shí)通過const關(guān)鍵字來定義常量,定義后...

    youkede 評(píng)論0 收藏0
  • 前端那些小眾而又精美的網(wǎng)站及工具

    摘要:寫此文的目的是為了總結(jié)在開發(fā)中能增加我們開發(fā)速度及能給我們帶來方便的工具與網(wǎng)站及一些小眾框架只限于簡(jiǎn)介不負(fù)責(zé)教程如有相應(yīng)的教程希望大家自薦或推薦我在這里感激不盡讓我們發(fā)現(xiàn)美并記錄它第一次寫文章請(qǐng)多多包涵如有我沒有寫到的但又是一些好用的工具及 寫此文的目的是為了總結(jié)在開發(fā)中能增加我們開發(fā)速度及能給我們帶來方便的工具與網(wǎng)站及一些小眾框架只限于簡(jiǎn)介不負(fù)責(zé)教程如有相應(yīng)的教程希望大家自薦或推薦我...

    Edison 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<