JavaScript最常用的10个自定义函数
简介
本文将介绍JavaScript中最常用的10个自定义函数,涉及最常见的字符串操作、数组操作、日期操作、格式化输出等方面,适合初学者学习使用。
1. 判断变量类型:getType()
function getType(obj) {
var toString = Object.prototype.toString;
var type = toString.call(obj);
return type.substring(8, type.length - 1);
}
这个函数可以用来判断一个变量的类型,返回值是字符串形式。例如:
getType('Hello World!') // string
getType(2019) // number
getType(true) // boolean
getType(null) // null
getType(undefined) // undefined
getType([]) // array
getType({}) // object
2. 清空字符串两边空格:trim()
function trim(str) {
return str.replace(/^\s+|\s+$/g,"");
}
这个函数可以用来清空字符串两边的空格。例如:
var str = ' Hello World! ';
str = trim(str);
console.log(str); // 'Hello World!'
3. 字符串转换成数组:str2arr()
function str2arr(str, spliter) {
spliter = spliter || '';
return str.split(spliter);
}
这个函数可以用来将字符串转换成数组。例如:
var str = 'apple,banana,orange';
var arr = str2arr(str, ',');
console.log(arr); // ['apple', 'banana', 'orange']
4. 数组去重:uniqueArr()
function uniqueArr(arr) {
var newArr = [];
for (var i = 0; i < arr.length; i++) {
if (newArr.indexOf(arr[i]) === -1) {
newArr.push(arr[i]);
}
}
return newArr;
}
这个函数可以用来将数组去重。例如:
var arr = [1, 2, 3, 1, 2, 4];
var newArr = uniqueArr(arr);
console.log(newArr); // [1, 2, 3, 4]
5. 日期格式化:dateFormat()
function dateFormat(date, format) {
var o = {
"M+": date.getMonth() + 1, //月份
"d+": date.getDate(), //日
"h+": date.getHours(), //小时
"m+": date.getMinutes(), //分
"s+": date.getSeconds(), //秒
"q+": Math.floor((date.getMonth() + 3) / 3), //季度
"S": date.getMilliseconds() //毫秒
};
if (/(y+)/.test(format)) {
format = format.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
}
for (var k in o) {
if (new RegExp("(" + k + ")").test(format)) {
format = format.replace(RegExp.$1, (RegExp.$1.length == 1) ?
(o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
}
}
return format;
}
这个函数可以用来格式化日期输出。例如:
var date = new Date();
var str = dateFormat(date, 'yyyy-MM-dd hh:mm:ss');
console.log(str); // '2019-07-30 14:20:30'
6. 获取URL中的参数值:getQuery()
function getQuery(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;
}
这个函数可以用来获取URL中的参数值。例如:
// 假设URL为 'http://example.com?name=Jack&age=20'
var name = getQuery('name');
var age = getQuery('age');
console.log(name); // 'Jack'
console.log(age); // '20'
7. 序列化表单为JSON:serializeForm()
function serializeForm(form) {
var arr = form.serializeArray();
var obj = {};
for (var i = 0; i < arr.length; i++) {
obj[arr[i].name] = arr[i].value;
}
return obj;
}
这个函数可以用来序列化表单为JSON。例如:
// 假设表单中有<input name="name" value="Jack">和<input name="age" value="20">
var form = $('form');
var obj = serializeForm(form);
console.log(obj); // {name: 'Jack', age: '20'}
8. 随机字符串生成:randStr()
function randStr(len) {
var chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
var maxPos = chars.length;
var str = '';
for (var i = 0; i < len; i++) {
str += chars.charAt(Math.floor(Math.random() * maxPos));
}
return str;
}
这个函数可以用来生成指定长度的随机字符串。例如:
var str = randStr(8);
console.log(str); // 'M14Bd42c'
9. 身份证号校验:checkIDCard()
function checkIDCard(idcard) {
var area = {
'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': '澳门'
}
var idcard, Y, JYM;
var S, M;
var idcard_array = new Array();
idcard_array = idcard.split("");
if (area[parseInt(idcard.substr(0, 2))] == null) {
return false;
}
switch (idcard.length) {
case 15:
if ((parseInt(idcard.substr(6, 2)) + 1900) % 4 == 0 ||
((parseInt(idcard.substr(6, 2)) + 1900) % 100 == 0 &&
(parseInt(idcard.substr(6, 2)) + 1900) % 4 == 0)) {
ereg = /^[0-9]{15}$/;
} else {
ereg = /^[0-9]{15}$/;
}
if (ereg.test(idcard)) {
Y = (parseInt(idcard.substr(6, 2)) + 1900).toString();
S = parseInt(idcard.substr(8, 2));
M = parseInt(idcard.substr(10, 2));
if (S < 10) S = '0' + S;
if (M < 10) M = '0' + M;
idcard = Y + '-' + S + '-' + M;
return idcard;
} else {
return false;
}
break;
case 18:
if (parseInt(idcard.substr(6, 4)) % 4 == 0 ||
(parseInt(idcard.substr(6, 4)) % 100 == 0 &&
parseInt(idcard.substr(6, 4)) % 4 == 0)) {
ereg = /^[0-9]{17}[0-9X]{1}$/;
} else {
ereg = /^[0-9]{17}[0-9x]{1}$/;
}
if (ereg.test(idcard)) {
S = idcard.substr(0, 17);
Y = parseInt(idcard.substr(6, 4));
M = parseInt(idcard.substr(10, 2));
if (S < 10) S = '0' + S;
if (M < 10) M = '0' + M;
idcard = Y + '-' + S + '-' + M;
return idcard;
} else {
return false;
}
break;
default:
return false;
break;
}
}
这个函数可以用来验证身份证号码是否正确。例如:
var idcard = '130503670401001';
var result = checkIDCard(idcard);
console.log(result); // '1967-04-01'
10. 判断浏览器类型:getBrowserInfo()
function getBrowserInfo() {
var Sys = {};
var ua = navigator.userAgent.toLowerCase();
var re = /(msie|firefox|chrome|opera|version).*?([\d.]+)/;
var m = ua.match(re);
Sys.browser = m[1].replace(/version/, "'safari");
Sys.ver = m[2];
return Sys;
}
这个函数可以用来判断浏览器类型和版本。例如:
var browser = getBrowserInfo().browser;
var version = getBrowserInfo().ver;
console.log(browser); // 'chrome'
console.log(version); // '75.0.3770.100'
结束语
以上就是JavaScript中最常用的10个自定义函数,希望对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript 最常用的10个自定义函数[推荐] - Python技术站