JS 常用方法汇总(不定期更新)
/**
* 获取当前日期
* @returns {string}
*/
Common.currentDate = function () {
// 获取当前日期
var date = new Date();
// 获取当前月份
var nowMonth = date.getMonth() + 1;
// 获取当前是几号
var strDate = date.getDate();
// 添加分隔符“-”
var seperator = "-";
// 对月份进行处理,1-9月在前面添加一个“0”
if (nowMonth >= 1 && nowMonth <= 9) {
nowMonth = "0" + nowMonth;
}
// 对日期进行处理,1-9号在前面添加一个“0”
if (strDate >= 0 && strDate <= 9) {
strDate = "0" + strDate;
}
// 最后拼接字符串,得到一个格式为(yyyy-MM-dd)的日期
return date.getFullYear() + seperator + nowMonth + seperator + strDate;
};
/**
* 获取url上的参数(支持中文)
* @param key
* @returns {any}
*/
Common.getUrlParam = function (key) {
// 获取参数
var url = window.location.search;
// 正则筛选地址栏
var reg = new RegExp("(^|&)" + key + "=([^&]*)(&|$)");
// 匹配目标参数
var result = url.substr(1).match(reg);
//返回参数值
return result ? decodeURIComponent(result[2]) : null;
}
/**
* 数字千分位格式化
* @param number 要格式化的数字
* @param decimals 保留几位小数
* @param dec_point 小数点符号
* @param thousands_sep 千分位符号
* @returns {string}
*/
Common.numberFormat = function (number, decimals, dec_point, thousands_sep) {
number = (number + '').replace(/[^0-9+-Ee.]/g, '');
var n = !isFinite(+number) ? 0 : +number,
prec = !isFinite(+decimals) ? 2 : Math.abs(decimals),
sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
s = '',
toFixedFix = function (n, prec) {
var k = Math.pow(10, prec);
return '' + Math.ceil(n * k) / k;
};
s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
var re = /(-?\d+)(\d{3})/;
while (re.test(s[0])) {
s[0] = s[0].replace(re, "$1" + sep + "$2");
}
if ((s[1] || '').length < prec) {
s[1] = s[1] || '';
s[1] += new Array(prec - s[1].length + 1).join('0');
}
return s.join(dec);
};
/**
* 千分位格式化数字转为普通数字
* @param formatedNum
* @returns {number}
*/
Common.rNumberFormat = function (formatedNum) {
return parseFloat(formatedNum.replace(/[^\d\.-]/g, ""));
};
/**
* 构造树型结构数据
* @param {*} data 数据源
* @param {*} id id字段 默认 'id'
* @param {*} parentId 父节点字段 默认 'parentId'
* @param {*} children 孩子节点字段 默认 'children'
* @param {*} rootId 根Id 默认 0
*/
Common.treeBuilder = function(data, id, parentId, children, rootId) {
id = id || 'id'
parentId = parentId || 'parentId'
children = children || 'children'
rootId = rootId || 0
//对源数据深度克隆
const cloneData = JSON.parse(JSON.stringify(data))
//循环所有项
const treeData = cloneData.filter(father => {
let branchArr = cloneData.filter(child => {
//返回每一项的子级数组
return father[id] === child[parentId]
});
branchArr.length > 0 ? father[children] = branchArr : '';
//返回第一层
return father[parentId] === rootId;
});
return treeData != '' ? treeData : data;
};
/**
* 重新封装jQuery的 ajax方法
**/
var $ax = function (url, success, error) {
this.url = url;
this.type = "post";
this.data = {};
this.dataType = "json";
this.async = false;
this.success = success;
this.error = error;
};
$ax.prototype = {
start: function () {
var me = this;
var result = "";
if (this.url.indexOf("?") === -1) {
this.url = this.url + "?jstime=" + new Date().getTime();
} else {
this.url = this.url + "&jstime=" + new Date().getTime();
}
$.ajax({
type: me.type,
url: me.url,
dataType: me.dataType,
async: me.async,
data: me.data,
beforeSend: function (data) {
},
success: function (data) {
result = data;
if (me.success !== undefined) {
me.success(data);
}
},
error: function (data) {
if (me.error !== undefined) {
me.error(data);
}
}
});
return result;
},
set: function (key, value) {
if (typeof key === "object") {
for (var i in key) {
if (typeof i === "function")
continue;
this.data[i] = key[i];
}
} else {
this.data[key] = (typeof value === "undefined") ? $("#" + key).val() : value;
}
return this;
},
setData: function (data) {
this.data = data;
return this;
},
clear: function () {
this.data = {};
return this;
}
};
本文版权归作者和博客园共有,欢迎转载。但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利!
作者:刘呵呵
QQ:352887191