javascript一些实用的方法
2024-09-05 05:34:27
判断数据类型
function isType(type) {
return function(obj) {
return {}.toString.call(obj) == "[object " + type + "]"
}
} var isObject = isType("Object");
var isString = isType("String");
var isArray = isType("Array");
var isFunction = isType("Function");
var isUndefined = isType("Undefined"); //使用方法
isString('sss'); //true
判断是否是PC端
function isPC() {
var userAgentInfo = navigator.userAgent, Agents = ['Android', 'iPhone', 'SymbianOS', 'Windows Phone', 'iPad', 'iPod'],
flag = true;
for (var i = 0; i < Agents.length; i++) {
if (userAgentInfo.indexOf(Agents[i]) > 0) {
flag = false;
break;
}
}
return flag;
} //使用方法
isPC(); //true为pc端
判断是否微信浏览器
function isWX() {
var ua = window.navigator.userAgent.toLowerCase();
3 return ua.match(/MicroMessenger/i) == 'micromessenger';
} //使用方法
isWX(); //true为微信浏览器
生成随机字符串(可指定长度,默认32)
function randomNumber(len) {
len = len || 32;
var chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz12345678'; //默认去掉了容易混淆的字符
var maxPos = chars.length,
pwd = '';
for (var i = 0; i < len; i++) {
pwd += chars.charAt(Math.floor(Math.random() * maxPos));
}
return pwd;
} //使用方法
randomNumber(8); //可用于文件路径随机数
生成唯一标识GUID(订单号等使用)
function generateUUID() {
var d = new Date().getTime();
var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
var r = (d + Math.random() * 16) % 16 | 0;
d = Math.floor(d / 16);
return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);
});
return uuid;
}; // 使用方法
generateUUID(); //需要唯一标识时可用
获取网址的参数值(单个值)
function getQueryString(name) {
var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
var r = window.location.search.substr(1).match(reg);
if (r != null) {
return unescape(r[2]);
}
return null;
} // http://xxxx.com/?name=hehe
getQueryString("name"); //hehe
获取网址的参数值(返回所有参数为JSON数据)
function GetUrlParam(){
let url = document.location.toString();
let arrObj = url.split("?");
let params = Object.create(null)
if (arrObj.length > 1){
arrObj = arrObj[1].split("&");
arrObj.forEach(item=>{
item = item.split("=");
params[item[0]] = item[1]
})
}
return params;
}
// ?a=1&b=2&c=3 ==> {a: "1", b: "2", c: "3"}
数组去重
// 利用对象属性名不能重复
function toRepeat(a, b){
let arr = a.concat(b);
let result = [];
let obj = {}; for (let i of arr) {
if (!obj[i]) {
result.push(i)
obj[i] = 1
}
} return result;
} // ES6 方法 利用new Set()的数组元素唯一性
function distinct(a, b) {
return Array.from(new Set([...a, ...b]))
}
去除字符串空格
// type 1-所有空格,2-前后空格,3-前空格,4-后空格
function getTrim(str, type){
switch () {
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;
}
} // 不得不说,正则是真的好用
格式化时间
function dateFormater(formater, t){
let date = t ? new Date(t) : new Date(),
Y = date.getFullYear() + '',
M = date.getMonth() + 1,
D = date.getDate(),
H = date.getHours(),
m = date.getMinutes(),
s = date.getSeconds();
return formater.replace(/YYYY|yyyy/g,Y)
.replace(/YY|yy/g,Y.substr(2,2))
.replace(/MM/g,(M<10?'0':'') + M)
.replace(/DD/g,(D<10?'0':'') + D)
.replace(/HH|hh/g,(H<10?'0':'') + H)
.replace(/mm/g,(m<10?'0':'') + m)
.replace(/ss/g,(s<10?'0':'') + s)
}
// dateFormater('YYYY-MM-DD HH:mm', t) ==> 2019-06-26 18:30
// dateFormater('YYYYMMDDHHmm', t) ==> 201906261830
// 转换时间格式
'2019年06月28日'.replace(/(\d{4}).(\d{1,2}).(\d{1,2}).+/mg, '$1-$2-$3') ===> 2019-06-28 '2019-06-28'.replace(/(\d{4}).(\d{1,2}).(\d{1,2}).+/mg, '$1年$2月$3日') ===> 2019年06月28日
禁止右键、选择、复制
['contextmenu', 'selectstart', 'copy'].forEach(function(ev){
document.addEventListener(ev, function(event){
return event.returnValue = false
})
});
一部分是项目中遇到的问题,一部分是网上收集的方法
-- 时间问题,待续 --
最新文章
- thinkphp 3.2与phpexcel
- iOS 视频录制、压缩、上传
- Spring概念
- web
- Swift - 初始化Initialization
- orcale 匿名代码块
- JavaScript 中的 this ,看着一篇就够了
- 讲讲你不知道的 ARC (一)
- Jason 分享吴霁虹教授的产品模型
- 狗狗40题~(Volume A)
- Android 环境配置:git开启多颜色模式
- Android学习笔记--广播(Broadcast)
- 数据结构-B树
- Telnet,SSH1,SSH2,Telnet/SSL,Rlogin,Serial,TAPI,RAW
- MongoDB的备份和部署 高级功能索引,聚合复制,分片
- Java中的异常简介
- sql base and plsql and database
- sh脚本文件的运行
- C语言之基本算法24—黄金切割法求方程近似根
- 一,Android Studio笔记
热门文章
- 我是如何理解Android的Handler模型_1
- 关于b站爬虫的尝试(二)
- Codeforces Round #551 (Div. 2) E. Serval and Snake (交互题)
- 关于不用Hashtable
- 关于IE8的兼容性问题
- Oracle 后台进程(六)PMON进程
- pat 甲级 1057 Stack(30) (树状数组+二分)
- crm-权限管理
- k8s/Kubernetes常用组件Helm的部署
- Spring注解驱动——组件注册系列