1. 判断当前所在的环境:
/* * 判断运行环境 */ const _uas = navigator.userAgent.toLowerCase(); const isWho = { is_weixin: function() { if (_uas.match(/MicroMessenger/i) == "micromessenger") { return true; } else { return false; } }, is_ios: function() { if (_uas.match(/iphone/i) || _uas.match(/ipad/i) || _uas.match(/ipod/i)) { return true; } else { return false; } }, is_android: function() { if (_uas.match(/android/i)) { return true; } else { return false; } }, is_weibo: function() { if (_uas.match(/weibo/i)) { return true; } else { return false; } } }
获取特定url参数
/* * URL获取参数 * * @param {String} name 要获取的参数名称 * @return {String} 获取的参数值 */ const getUrl = function(name) { // console.log(decodeURI((RegExp(name + '=' + '(.+?)(&|$)').exec(location.search) || [, ''])[1])); return decodeURI( (RegExp(name + '=' + '(.+?)(&|$)').exec(location.search) || [, ''])[1] ); }
数组对象深拷贝
this.alldeepCopy = function(o) { if (o instanceof Array) { var n = []; for (var i = 0; i < o.length; ++i) { n[i] = this.alldeepCopy(o[i]); } return n; } else if (o instanceof Object) { var n = {} for (var i in o) { n[i] = this.alldeepCopy(o[i]); } return n; } else { return o; } }
3. js拷贝到粘贴板
input的拷贝
function copyText() { var elem = document.getElementById(id); elem.select(); document.execCommand("Copy"); alert("Copied the text); }
拷贝其他标签的文本,如span
function CopyToClipboard(containerid) { var range = document.createRange(); range.selectNode(document.getElementById(containerid)); window.getSelection().addRange(range); document.execCommand("copy"); alert("text copied") ; }
4. 对各种时间格式转换
//时间戳转时间 function stampToTime(dateNum: any, type, defaultVal = "- -") { if (!dateNum) { if (dateNum !== 0) { return defaultVal } } if (typeof (dateNum) == "string") { if(dateNum.indexOf('-') == -1){ if (dateNum.length == 13) { dateNum = parseInt(dateNum); } else { return dateNum } } } let date = new Date(dateNum); let month = date.getMonth() + 1; if(type == 1){ //2018-5-5 12:07:05 return date.getFullYear() + "-" + month + "-" + date.getDate() + " " + fixZero(date.getHours(), 2) + ":" + fixZero(date.getMinutes(), 2) + ":" + fixZero(date.getSeconds(), 2) }; if(type == 2){ //2018-05-05 12:07:05 return date.getFullYear() + "-" + fixZero(month, 2) + "-" + fixZero(date.getDate(), 2) + " " + fixZero(date.getHours(), 2) + ":" + fixZero(date.getMinutes(), 2) + ":" + fixZero(date.getSeconds(), 2) }; if(type == 3){ //2018/5/5 12:07:05 return date.getFullYear() + "/" + month + "/" + date.getDate() + " " + fixZero(date.getHours(), 2) + ":" + fixZero(date.getMinutes(), 2) + ":" + fixZero(date.getSeconds(), 2) }; if(type == 4){ //2018/05/05 12:07:05 return date.getFullYear() + "/" + fixZero(month, 2) + "/" + fixZero(date.getDate(), 2) + " " + fixZero(date.getHours(), 2) + ":" + fixZero(date.getMinutes(), 2) + ":" + fixZero(date.getSeconds(), 2) }; if(type == 5){ //2018-5-5 return date.getFullYear() + "-" + month + "-" + date.getDate() }; if(type == 6){ //2018-05-05 return date.getFullYear() + "-" + fixZero(month, 2) + "-" + fixZero(date.getDate(), 2) }; if(type == 7){ //2018/5/5 return date.getFullYear() + "/" + month + "/" + date.getDate() }; if(type == 8){ //2018/05/05 return date.getFullYear() + "/" + fixZero(month, 2) + "/" + fixZero(date.getDate(), 2) }; if(type == 9){ //2018年05月05 return date.getFullYear() + "年" + fixZero(month, 2) + "月" + fixZero(date.getDate(), 2) + "日" }; if(type == 10){ //20180505120705 return date.getFullYear() + fixZero(month, 2) + fixZero(date.getDate(), 2) + fixZero(date.getHours(), 2) + fixZero(date.getMinutes(), 2) + fixZero(date.getSeconds(), 2) }; }
5. js hex String和 byteArray转换
// Convert a hex string to a byte array function hexToBytes(hex) { for (var bytes = [], c = 0; c < hex.length; c += 2) bytes.push(parseInt(hex.substr(c, 2), 16)); return bytes; } // Convert a byte array to a hex string function bytesToHex(bytes) { for (var hex = [], i = 0; i < bytes.length; i++) { var current = bytes[i] < 0 ? bytes[i] + 256 : bytes[i]; hex.push((current >>> 4).toString(16)); hex.push((current & 0xF).toString(16)); } return hex.join(""); }
6.防抖节流函数
1 function debounce(func, delay) { 2 let timeout 3 return function () { 4 clearTimeout(timeout) // 如果持续触发,那么就清除定时器,定时器的回调就不会执行。 5 timeout = setTimeout(() => { 6 func.apply(this, arguments) 7 }, delay) 8 } 9 } 10 11 12 function throttle(func, deley) { 13 let run = true 14 return function () { 15 if (!run) { 16 return // 如果开关关闭了,那就直接不执行下边的代码 17 } 18 run = false // 持续触发的话,run一直是false,就会停在上边的判断那里 19 setTimeout(() => { 20 func.apply(this, arguments) 21 run = true // 定时器到时间之后,会把开关打开,我们的函数就会被执行 22 }, deley) 23 } 24 }
7. str和arrybuffer转换
function ab2str(buf) { return String.fromCharCode.apply(null, new Uint16Array(buf)); } function str2ab(str) { let buf = new ArrayBuffer(str.length * 2); let bufView = new Uint16Array(buf); for (let i = 0, strLen = str.length; i < strLen; i++) { bufView[i] = str.charCodeAt(i); } return buf; }