前端JS常用工具方法

// var ua = window.navigator.userAgent.toLowerCase();
/*** 前端JS常用工具方法* @class Tools*/
export default class Tools {/*** 1.是否邮箱* @method isEmail* @static Tools* @param {String} s 需判断的邮件地址* @returns {Boolean}*/static isEmail (s) {return /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/.test(s)}/*** 2.手机号码* @method isMobile* @static Tools* @param {String} s * @returns {Boolean}*/static isMobile (s) {return /^1[0-9]{10}$/.test(s)}//3.电话号码static isPhone = (s) => {return /^([0-9]{3,4}-)?[0-9]{7,8}$/.test(s)}//4.是否url地址static isURL = (s) => {return /^http[s]?:\/\/.*/.test(s)}//5.是否字符串static isString (o) {return Object.prototype.toString.call(o).slice(8, -1) === 'String'}//6.是否数字static isNumber (o) {return Object.prototype.toString.call(o).slice(8, -1) === 'Number'}//7.是否booleanstatic isBoolean (o) {return Object.prototype.toString.call(o).slice(8, -1) === 'Boolean'}//8.是否函数static isFunction = (o) => {return Object.prototype.toString.call(o).slice(8, -1) === 'Function'}//9.是否为nullstatic isNull = (o) => {return Object.prototype.toString.call(o).slice(8, -1) === 'Null'}//10.是否undefinedstatic isUndefined = (o) => {return Object.prototype.toString.call(o).slice(8, -1) === 'Undefined'}//11.是否对象static isObj = (o) => {return Object.prototype.toString.call(o).slice(8, -1) === 'Object'}//12.是否数组static isArray = (o) => {return Object.prototype.toString.call(o).slice(8, -1) === 'Array'}//13.是否时间static isDate = (o) => {return Object.prototype.toString.call(o).slice(8, -1) === 'Date'}//14.是否正则static isRegExp = (o) => {return Object.prototype.toString.call(o).slice(8, -1) === 'RegExp'}//15.是否错误对象static isError = (o) => {return Object.prototype.toString.call(o).slice(8, -1) === 'Error'}//16.是否Symbol函数static isSymbol = (o) => {return Object.prototype.toString.call(o).slice(8, -1) === 'Symbol'}//17.是否Promise对象static isPromise = (o) => {return Object.prototype.toString.call(o).slice(8, -1) === 'Promise'}//是否Set对象static isSet = (o) => {return Object.prototype.toString.call(o).slice(8, -1) === 'Set'}//19.是否是微信浏览器static isWeiXin () {return ua.match(/microMessenger/i) == 'micromessenger'}//20.是否是移动端static isDeviceMobile = () => {return /android|webos|iphone|ipod|balckberry/i.test(ua)}//21.是否是QQ浏览器static isQQBrowser = () => {return !!ua.match(/mqqbrowser|qzone|qqbrowser|qbwebviewtype/i)}//22.是否是爬虫static 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)}//23.是否iosstatic isIos = () => {var u = navigator.userAgent;if (u.indexOf('Android') > -1 || u.indexOf('Linux') > -1) {  //安卓手机return false} else if (u.indexOf('iPhone') > -1) {//苹果手机return true} else if (u.indexOf('iPad') > -1) {//iPadreturn false} else if (u.indexOf('Windows Phone') > -1) {//winphone手机return false} else {return false}}//24.是否为PC端static 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;}//25.去除html标签static removeHtmltag = (str) => {return str.replace(/<[^>]+>/g, '')}//26.获取url参数static getQueryString = (name) => {const reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');const search = window.location.search.split('?')[1] || '';const r = search.match(reg) || [];return r[2];}//27.动态引入jsstatic 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);}//28.根据url地址下载static download = (url) => {var isChrome = ua.indexOf('chrome') > -1;var isSafari = ua.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;}//29.el是否包含某个classstatic hasClass = (el, className) => {let reg = new RegExp('(^|\\s)' + className + '(\\s|$)')return reg.test(el.className)}//30.el添加某个classstatic addClass (el, className) {if (hasClass(el, className)) {return}let newClass = el.className.split(' ')newClass.push(className)el.className = newClass.join(' ')}//31.el去除某个classstatic removeClass (el, className) {if (!hasClass(el, className)) {return}let reg = new RegExp('(^|\\s)' + className + '(\\s|$)', 'g')el.className = el.className.replace(reg, ' ')}//32.获取滚动的坐标static getScrollPosition (el = window) {return {x: el.pageXOffset !== undefined ? el.pageXOffset : el.scrollLeft,y: el.pageYOffset !== undefined ? el.pageYOffset : el.scrollTop}}//33.滚动到顶部static scrollToTop () {const c = document.documentElement.scrollTop || document.body.scrollTop;if (c > 0) {window.requestAnimationFrame(scrollToTop);window.scrollTo(0, c - c / 8);}}//34.el是否在视口范围内static 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;}//35.洗牌算法随机static 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;}//36.劫持粘贴板static 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);}//37.判断类型集合static checkStr = (str, type) => {switch (type) {case 'phone':   //手机号码return /^1[3|4|5|6|7|8|9][0-9]{9}$/.test(str);case 'tel':     //座机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':     //密码以字母开头,长度在6~18之间,只能包含字母、数字和下划线return /^[a-zA-Z]\w{5,17}$/.test(str)case 'postal':  //邮政编码return /[1-9]\d{5}(?!\d)/.test(str);case 'QQ':      //QQ号return /^[1-9][0-9]{4,9}$/.test(str);case 'email':   //邮箱return /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/.test(str);case 'money':   //金额(小数点2位)return /^\d*(?:\.\d{0,2})?$/.test(str);case 'URL':     //网址return /(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/.test(str)case 'IP':      //IPreturn /((?:(?: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':    //日期时间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':  //数字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标记return /<("[^"]*"|'[^']*'|[^'">])*>/.test(str);default:return true;}}//38.严格的身份证校验static isCardID = (sId) => {if (!/(^\d{15}$)|(^\d{17}(\d|X|x)$)/.test(sId)) {console.log('你输入的身份证长度或格式错误')return false}//身份证城市var aCity = { 11: "北京", 12: "天津", 13: "河北", 14: "山西", 15: "内蒙古", 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: "台湾", 81: "香港", 82: "澳门", 91: "国外" };if (!aCity[parseInt(sId.substr(0, 2))]) {console.log('你的身份证地区非法')return false}// 出生日期验证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}// 身份证号码校验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]; //计算出来的最后一位身份证号码if (sId[sId.length - 1] != last) {console.log('你输入的身份证号非法')return false}return true}//39.随机数范围static random (min = 1, max = 10) {if (arguments.length === 2) {return Math.floor(min + Math.random() * ((max + 1) - min))} else {return null;}}//40.将阿拉伯数字翻译成中文的大写数字static numberToChinese = (num) => {var AA = new Array("零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十");var BB = new Array("", "十", "百", "仟", "萬", "億", "点", "");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) // 加上小数部分(如果有小数部分){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;}//41.将数字转换为大写金额static changeToChinese = (Num) => {//判断如果传递进来的不是字符的话转换为字符if (typeof Num == "number") {Num = new String(Num);};Num = Num.replace(/,/g, "") //替换tomoney()中的“,”Num = Num.replace(/ /g, "") //替换tomoney()中的空格Num = Num.replace(/¥/g, "") //替换掉可能出现的¥字符if (isNaN(Num)) { //验证输入的字符是否为数字//alert("请检查小写金额是否正确");return "";};//字符处理完毕后开始转换,采用前后两部分分别转换var part = String(Num).split(".");var newchar = "";//小数点前进行转化for (var i = part[0].length - 1; i >= 0; i--) {if (part[0].length > 10) {return "";//若数量超过拾亿单位,提示}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 + "万";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;}//小数点之后进行转化if (Num.indexOf(".") != -1) {if (part[1].length > 2) {// alert("小数点之后只能保留两位,系统将自动截断");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;}}//替换所有无用汉字while (newchar.search("零零") != -1)newchar = newchar.replace("零零", "零");newchar = newchar.replace("零亿", "亿");newchar = newchar.replace("亿万", "亿");newchar = newchar.replace("零万", "万");newchar = newchar.replace("零元", "元");newchar = newchar.replace("零角", "");newchar = newchar.replace("零分", "");if (newchar.charAt(newchar.length - 1) == "元") {newchar = newchar + "整"}return newchar;}//42.判断一个元素是否在数组中static contains = (arr, val) => {return arr.indexOf(val) != -1 ? true : false;}//43.数组排序,{type} 1:从小到大 2:从大到小 3:随机static 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;}})}//44.去重static 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;}}//45.求两个集合的并集static union = (a, b) => {var newArr = a.concat(b);return this.unique(newArr);}//46.求两个集合的交集static intersect = (a, b) => {var _this = this;a = this.unique(a);return this.map(a, function (o) {return _this.contains(b, o) ? o : null;});}//47.删除其中一个元素static remove = (arr, ele) => {var index = arr.indexOf(ele);if (index > -1) {arr.splice(index, 1);}return arr;}//48.将类数组转换为数组static formArray = (ary) => {var arr = [];if (Array.isArray(ary)) {arr = ary;} else {arr = Array.prototype.slice.call(ary);};return arr;}//49.最大值static max = (arr) => {return Math.max.apply(null, arr);}//50.最小值static min = (arr) => {return Math.min.apply(null, arr);}//51.求和static sum = (arr) => {return arr.reduce((pre, cur) => {return pre + cur})}//52.平均值static average = (arr) => {return this.sum(arr) / arr.length}//53.去除空格,type: 1-所有空格 2-前后空格 3-前空格 4-后空格static trim = (str, type) => {type = type || 1switch (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;}}//54.字符转换,type: 1:首字母大写 2:首字母小写 3:大小写转换 4:全部大写 5:全部小写static changeCase = (str, type) => {type = type || 4switch (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;}}//55.检测密码强度static 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;}//56.函数节流器static debouncer = (fn, time, interval = 200) => {if (time - (window.debounceTimestamp || 0) > interval) {fn && fn();window.debounceTimestamp = time;}}//57.在字符串中插入新字符串static insertStr = (soure, index, newStr) => {var str = soure.slice(0, index) + newStr + soure.slice(index);return str;}//58.判断两个对象是否键值相同static 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;}//59.16进制颜色转RGBRGBA字符串static colorToRGB = (val, opa) => {var pattern = /^(#?)[a-fA-F0-9]{6}$/; //16进制颜色值校验规则var isOpa = typeof opa == 'number'; //判断是否有设置不透明度if (!pattern.test(val)) { //如果值不符合规则返回空字符return '';}var v = val.replace(/#/, ''); //如果有#号先去除#号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;}//60.追加url参数static 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;}/*** 截取指定字节的字符串* @param str 要截取的字符穿* @param len 要截取的长度,根据字节计算* @param suffix 截取前len个后,其余的字符的替换字符,一般用“…”* @returns {*}*/static cutString (str, len, suffix) {if (!str) return "";if (len <= 0) return "";if (!suffix) suffix = "";var templen = 0;for (var i = 0; i < str.length; i++) {if (str.charCodeAt(i) > 255) {templen += 2;} else {templen++}if (templen == len) {return str.substring(0, i + 1) + suffix;} else if (templen > len) {return str.substring(0, i) + suffix;}}return str;}/*** 对象克隆&深拷贝* @method cloneObj* @param obj* @returns {{}}*/static cloneObj (obj) {var newO = {};if (obj instanceof Array) {newO = [];}for (var key in obj) {var val = obj[key];newO[key] = typeof val === 'object' ? arguments.callee(val) : val;}return newO;};/*** 对象克隆&深拷贝* @method clone* @param obj* @returns {{}}*/static clone (obj) {// Handle the 3 simple types, and null or undefinedif (null == obj || "object" != typeof obj) return obj;// Handle Dateif (obj instanceof Date) {var copy = new Date();copy.setTime(obj.getTime());return copy;}// Handle Arrayif (obj instanceof Array) {var copy = [];for (var i = 0, len = obj.length; i < len; ++i) {copy[i] = clone(obj[i]);}return copy;}// Handle Objectif (obj instanceof Object) {var copy = {};for (attr in obj) {if (obj.hasOwnProperty(attr)) copy[attr] = clone(obj[attr]);}return copy;}throw new Error("Unable to copy obj! Its type isn't supported.");}static setHtmlRem () {var rem = {baseRem: 40, // 基准字号,按照iphone6应该为20,此处扩大2倍,便于计算baseWidth: 750, // 基准尺寸宽,此处是按照ihpone6的尺寸rootEle: document.getElementsByTagName("html")[0],initHandle: function () {this.setRemHandle();this.resizeHandle();},setRemHandle: function () {var clientWidth = document.documentElement.clientWidth || document.body.clientWidth;this.rootEle.style.fontSize = clientWidth * this.baseRem / this.baseWidth + "px";},resizeHandle: function () {var that = this;window.addEventListener("resize", function () {setTimeout(function () {that.setRemHandle();}, 300);});}};rem.initHandle();}//17.生成随机颜色值static  getRandomColor () {const rgb = []for (let i = 0 ; i < 3; ++i){let color = Math.floor(Math.random() * 256).toString(16);color = color.length == 1 ? '0' + color : color;rgb.push(color);}return '#' + rgb.join('');}}

前端JS常用工具方法相关推荐

  1. 前端JS常用工具方法 , 收藏

    再加几个常用的 计算百分比 /*** 计算百分比* @param {number} num 分子* @param {number} total 分母* @returns {number} 返回数百分比 ...

  2. js常用工具方法utils

    申明:不是我写的,但是我忘记在那篇文章上找到的 记录下来 /*** 邮箱* @param {*} s*/ export const isEmail = (s) => {return /^([a- ...

  3. 自定义一些JS常用工具方法

    1.去除字符串左右两端的空格 trim: function(str) {return str.replace(/(^\s*)|(\s*$)/g, ""); } 2.取时间戳 cre ...

  4. jQuery常用工具方法

    前面的话 jQuery提供一些与元素无关的工具方法,不必选中元素,就可以直接使用这些方法.如果理解原生javascript的继承原理,那么就能理解工具方法的实质.它是定义在jQuery构造函数上的方法 ...

  5. JS常用属性方法大全

    JS常用属性方法大全 1.输出语句:document.write(""); 2.JS中的注释为: 3.传统的HTML文档顺序是:document->html->(hea ...

  6. PHP常用工具方法集...

    PHP常用工具方法集,更新时间  2018-7-14 <?php /*** 常用工具方法集* Author: zj*//** 工具总述 1.加密解密 2.生成随机字符串 3.获取文件扩展名(后缀 ...

  7. 性能测试之前端性能优化(前端基础知识,前端性能测试常用工具,前端性能优化常见方法)

    目录 1. 前端基础知识 1.1 为什么要关注前端页面的性能,了解页面的加载,渲染方式和顺序? 1.2 一次页面请求会经历哪些步骤? 1.3 页面的展示过程 2. 前端性能测试的常用工具 2.1 Go ...

  8. concat合并的数组会有顺序么_超全的JS常用数组方法整理

    前言 常用数组方法汇总 方法解析 1:concat(); 2:join(); 3:pop(); 4:shift(); 5:unshift(); 7:reverse(); 8:sort(); 9:sli ...

  9. JS前端常用工具方法

    目录 1. 邮箱 2. 手机号码 3. 电话号码 4. URL地址 5. 是否字符串 6. 是否数字 7. 是否Boolean 8. 是否函数 9. 是否为null 10. 是否undefined 1 ...

最新文章

  1. Java项目:医院管理系统(java+javaweb+jdbc+Mysql+lw)
  2. Android App监听软键盘按键的三种方式(转)
  3. aspnetcore mvc 异常处理_深入探究ASP.NET Core异常处理中间件
  4. 计算机应用技术一级考试成绩,《计算机应用基础》课程与等级考试成绩的关系...
  5. 可视化 nlp_使用nlp可视化尤利西斯
  6. SQL运行速度慢?查查中间件
  7. 聚划算百亿补贴上线新iPhone SE 售价2799元
  8. 央视牵手搜狗,AI合成主播为3·15晚会预热
  9. CLR 4.0 有哪些新东西? What's new in CLR 4.0--类型嵌入 Type embedding
  10. 完全掌握1级日本与能力考试语法问题对策
  11. python实验教程_python语言程序设计实践教程实验七
  12. 如何虚拟打印PDF文件(Win7)
  13. Simple QQLogin 2.1(QQ登陆器,适用于 QQ2009 或更新版本)
  14. linux安装7z命令,Linux 下安装 7zip 及使用
  15. 光纤交换机巡检配置常用命令
  16. 在进行github相关操作的时候一直被要求Enter passphrase for key. 如何避免每次操作都重新填写一遍passphrase?
  17. Jenkins学习(执行命令路径,脚本上传静态html代码)(一)
  18. python保存文件的几种方式
  19. 从网络获取图片的程序
  20. swing 文本框双击Ctrl,触发删除全部并黏贴

热门文章

  1. 2021-2027全球与中国汽车电动四分之一回转执行器市场现状及未来发展趋势
  2. 多种方法实现CT肺实质的自动分割
  3. 华东师范大学 软件工程 2020年可信人工智能优秀大学生夏令营机试
  4. 【三维目标检测】Pointpillars(二)
  5. 单应性矩阵在标定中的应用
  6. JavaScript 字符串不变性
  7. android 皮肤,Android换肤
  8. 计算机流水线生产管理知识,生产流水线管理应注意的六个方面
  9. 【Unity】防反编译之windows平台加密dll
  10. 无法将“XXX”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。 对这个问题的解决方法