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

資訊專欄INFORMATION COLUMN

JavaScript 工具類

CastlePeaK / 2935人閱讀

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

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

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

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

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

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

    /**
     * 手機(jī)號
     * @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)
    }

    /**
     * 身份證號
     * @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ù)字,減號,下劃線)
     * @param {String} str 
     */
    isWeChart(str) {
        return /^[a-zA-Z]([-_a-zA-Z0-9]{5,19})+$/.test(str)
    }
}
字符串

整理字符串去除所有空格,隨機(jī)密碼以及如何檢測密碼強(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)
    }

    /**
     * 檢測密碼強(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的新特性。在此給出一個我經(jīng)常用到的數(shù)據(jù)去重方案。

class _Array {
    /**
     * 數(shù)組去重, 利用對象的特性
     * @param {Array} old_arr 
     */
    removeRepeat(old_arr) {
        let new_arr = []
        let obj = {}
        for (let i = 0, len = old_arr.length; i < len; i++) {
            // 對象中是否存在該屬性
            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)在的已過時間
     * @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 + "個月前"
        }
        if (day) {
            return day + "天前"
        }
        if (hour) {
            return hour + "小時前"
        }
        if (min) {
            return min + "分鐘前"
        } else {
            return "剛剛"
        }
    }

    /**
     * 格式化現(xiàn)在距${endTime}的剩余時間
     * @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 + "小時 " + 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)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

    Edison 評論0 收藏0

發(fā)表評論

0條評論

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