摘要:在此給出一個我經常用到的數據去重方案。數組去重利用對象的特性對象中是否存在該屬性數字類型的數組最大值數字類型的數組最小值格式化距現在的已過時間年前個月前天前小時前分鐘前剛剛格式化現在距的剩余時間天小時分鐘秒未完待補充
整理常用的工具類,提高編碼效率正則
整理日常使用較多的用戶名,密碼,強密碼,手機號,郵箱,身份證號,QQ以及微信號的驗證
class _Regexp { /** * 用戶名, 4到16位(字母,數字,下劃線,減號) * @param {String} str */ isUser(str) { return /^[a-zA-Z0-9_-]{4,16}$/.test(str) } /** * 密碼, 以字母開頭,長度在6~18之間,只能包含字母、數字和下劃線 * @param {String} str */ isPassword() { return /^[a-zA-Z]w{5,17}$/.test(str) } /** * 強密碼, 最少6位,至少1個大寫字母,1個小寫字母,1個數字,1個特殊字符 * @param {String} str */ isStrongPassword(str) { return /^.*(?=.{6,})(?=.*d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*?]).*$/.test(str) } /** * 手機號 * @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位,以字母開頭,(字母,數字,減號,下劃線) * @param {String} str */ isWeChart(str) { return /^[a-zA-Z]([-_a-zA-Z0-9]{5,19})+$/.test(str) } }字符串
整理字符串去除所有空格,隨機密碼以及如何檢測密碼強度
class _String { /** * 去除字符串中所有空格 * @param {String} str */ trimAll(str) { return str.replace(/s+/g, "") } /** * 隨機碼, randomPassword(36) -> h9q9b4mytk * @param {Number} count */ randomPassword(count) { return Math.random().toString(count).substring(2) } /** * 檢測密碼強度 * @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 } }數組
數組去重,網上有很多種用法,比如使用indexOf,splice以及ES6種set的新特性。在此給出一個我經常用到的數據去重方案。
class _Array { /** * 數組去重, 利用對象的特性 * @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 } /** * 數字類型的數組最大值 * @param {Array} arr */ maxArr(arr) { return Math.max.apply(null, arr) } /** * 數字類型的數組最小值 * @param {Array} arr */ minArr(arr) { return Math.min.apply(null, arr) } }Date
class _Date { /** * 格式化${startTime}距現在的已過時間 * @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 "剛剛" } } /** * 格式化現在距${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
未完待補充
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/97330.html
摘要:相比于開發人員的數量,目前框架類庫和工具的數量似乎更多一些。本文將會討論目前最為流行的客戶端框架類庫和工具以及它們之間的基本差異。典型的類庫包括字符串處理日期元素事件動畫網絡請求等功能。所以不需要明確的區分類庫框架和工具。 相比于JavaScript開發人員的數量,目前JavaScript框架、類庫和工具的數量似乎更多一些。截至2017年5月,GitHub上的快速搜索顯示,有超過110...
摘要:特意對前端學習資源做一個匯總,方便自己學習查閱參考,和好友們共同進步。 特意對前端學習資源做一個匯總,方便自己學習查閱參考,和好友們共同進步。 本以為自己收藏的站點多,可以很快搞定,沒想到一入匯總深似海。還有很多不足&遺漏的地方,歡迎補充。有錯誤的地方,還請斧正... 托管: welcome to git,歡迎交流,感謝star 有好友反應和斧正,會及時更新,平時業務工作時也會不定期更...
摘要:假設有一個生產交通工具的工廠類,它包含生成多種交通工具實例的方法。在使用這個類生產對象的時候,傳入參數,在參數中的屬性規定我們需要的類型,構造函數就能夠返回我們需要的對象類型了。 一般來說,創建對象的時候我們都習慣使用new關鍵字來調用constructor構造函數,但使用這種方式會有一些缺點,首先構造器函數的創建本身就是為了模仿其他一些面向對象語言的特性,有些人覺得這是non-sen...
摘要:類的數據類型就是函數,類本身就指向構造函數。另一個需要注意的地方是,在子類的構造函數中,只有調用之后,才可以使用關鍵字,否則會報錯。 1.ES6-- 新一代JavaScript標準 1.1 const和let關鍵字 以前只有全局變量以及函數內部的局部變量,所以以前的局部變量只能定義在函數里面,但是現在不是了,可以通過let關鍵字來定義局部變量。同時通過const關鍵字來定義常量,定義后...
摘要:寫此文的目的是為了總結在開發中能增加我們開發速度及能給我們帶來方便的工具與網站及一些小眾框架只限于簡介不負責教程如有相應的教程希望大家自薦或推薦我在這里感激不盡讓我們發現美并記錄它第一次寫文章請多多包涵如有我沒有寫到的但又是一些好用的工具及 寫此文的目的是為了總結在開發中能增加我們開發速度及能給我們帶來方便的工具與網站及一些小眾框架只限于簡介不負責教程如有相應的教程希望大家自薦或推薦我...
閱讀 1487·2021-11-24 11:16
閱讀 2690·2021-07-28 12:32
閱讀 2302·2019-08-30 11:22
閱讀 1440·2019-08-30 11:01
閱讀 595·2019-08-29 16:24
閱讀 3547·2019-08-29 12:52
閱讀 1625·2019-08-29 12:15
閱讀 1332·2019-08-29 11:18