日期
日期转'YYYY-MM-DD'等格式
dateFormat (date, fmt) {
if (fmt == null) {
fmt = 'yyyy-MM-dd HH:mm:ss'
}
var o = {
'M+': date.getMonth() + 1,
'd+': date.getDate(),
'h+': date.getHours() % 12 === 0 ? 12 : date.getHours() % 12,
'H+': date.getHours(),
'm+': date.getMinutes(),
's+': date.getSeconds(),
'q+': Math.floor((date.getMonth() + 3) / 3),
'S': date.getMilliseconds()
}
var week = {
'0': '/u65e5',
'1': '/u4e00',
'2': '/u4e8c',
'3': '/u4e09',
'4': '/u56db',
'5': '/u4e94',
'6': '/u516d'
}
if (/(y+)/.test(fmt)) {
fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length))
}
if (/(E+)/.test(fmt)) {
fmt = fmt.replace(RegExp.$1, ((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? '/u661f/u671f' : '/u5468') : '') + week[date.getDay() + ''])
}
for (var k in o) {
if (new RegExp('(' + k + ')').test(fmt)) {
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)))
}
}
return fmt
},
根据字符串返回Date 类型
dateParse : function (fmt, str) {
var map = {
year: "y",
day: "d",
month: "M",
hour: "H",
minute: "m",
second: "s"
};
// 获取值
var getMapValure = function (type) {
var start = fmt.indexOf(type);
if(start == -1) {
return 0;
}
var end = fmt.lastIndexOf(type);
return str.substring(start, end + 1);
};
var year = getMapValure(map.year);
var month = getMapValure(map.month);
var day = getMapValure(map.day);
var hour = getMapValure(map.hour);
var minute = getMapValure(map.minute);
var second = getMapValure(map.second);
return new Date(year, month - 1, day, hour, minute, second);
},
数组
深层优先遍历
treeIterator(tree, func) {
tree.forEach((node) => {
func(node)
node.children && this.treeIterator(node.children, func)
})
},
this.treeIterator(list,(node)=>{
if(val.includes(node.id)){
node.checked = true
}
})
字符串
去除多余空格
clearBlank(val){
return val.replace(/\s*/g,"")
},
截取前几个字,并用...代替
ellipsis:function(value, len) {
if (!value) return ''
if (value.length > len) {
return value.slice(0, len) + '...'
}
return value
},
去掉两边的空白
trim : function(str) {
if(this.isString(str)) {
return str.replace(/(^\s+)|(\s+$)/g, "");
} else {
return str;
}
},
去除多余空格
clearBlank(val){
return val.replace(/\s*/g,"")
},
数字
四舍五入
round(number, precision) {
if (isNaN(number)) {
number = 0
}
if (number > 0) {
return (parseInt(number * Math.pow(10, precision) + 0.5) / Math.pow(10, precision))
} else if (number < 0) {
return (parseInt(number * Math.pow(10, precision) - 0.5) / Math.pow(10, precision))
} else {
return (parseInt(number * Math.pow(10, precision)) / Math.pow(10, precision))
}
}
截取N位小数(直接截取,不进行四舍五入)
fixed(number, precision) {
if (isNaN(number) || number === '' || number == null) {
number = 0
}
let result = number.toString()
if (result.indexOf('.') === -1) {
result = result + '.'
}
let tempStr = ''
for (let i = 0
tempStr = tempStr + '0'
}
result = result + tempStr
result = result.substring(0, precision + result.indexOf('.') + 1)
if (result.endsWith('.')) {
result = result.substring(0, result.length - 1)
}
return result
}
取整
/**
* 取整
* @param {[type]} number [保费]
* @param {[type]} flag [标志。-1表示向下取整;0表示四舍五入;1或者不含这参数表示向上取整]
* @return {[type]} [description]
*/
adjustValue(number, flag) {
let OldValue = parseFloat(number)
let NewValue = 0
if (flag === -1) {
NewValue = Math.floor(OldValue)
} else if (flag === 0) {
NewValue = Math.round(OldValue)
} else if (flag === undefined || flag === 1) {
NewValue = Math.ceil(OldValue)
}
return NewValue
}
校验验证
校验输入数字是否是整数
isInteger(strValue) {
if (strValue) {
let reg = /\d+/g
if (strValue == reg.exec(strValue)) {
return true
}
}
return false
}
校验密码(大小写,数字,特殊字符)
passwordValid(str){
const rC = {
lw: '[a-z]',
uw: '[A-Z]',
nw: '[0-9]',
sw: '[\\u0020-\\u002F\\u003A-\\u0040\\u005B-\\u0060\\u007B-\\u007E]'
}
function Reg(str,rStr){
const reg = new RegExp(rStr);
if(reg.test(str)){
return true;
} else {
return false;
}
}
const tR = {
l: Reg(str, rC.lw),
u: Reg(str, rC.uw),
n: Reg(str, rC.nw),
s: Reg(str, rC.sw)
}
if(str && str.length < 10){
return false;
} else {
if((tR.l && tR.u && tR.n) || (tR.l && tR.u && tR.s)){
return true;
}else{
return false;
}
}
}
其他工具方法
JS生成uuid方法
getUuid() {
var s = []
var hexDigits = "0123456789abcdef"
for (var i = 0
s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1)
}
s[14] = "4"
s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1)
s[8] = s[13] = s[18] = s[23] = "-"
var uuid = s.join("")
return uuid
},
JS生成uuid,并且去掉字符串中的 '-'
getUuid() {
var s = []
var hexDigits = "0123456789abcdef"
for (var i = 0
s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1)
}
s[14] = "4"
s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1)
s[8] = s[13] = s[18] = s[23] = "-"
var uuid = s.join("")
uuid = uuid.replace(/[-]/g,"")
return uuid
},s[18] = s[23] = "-"
uuid = uuid.replace(/[-]/g,"")
var uuid = s.join("")
return uuid
},
file文件转换成base64编码
fileByBase64(file, callback){
var reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = function (e) {
console.log(e.target.result);
callback(e.target.result)
};
},
判断是否为IE浏览器
isIE: function() {
if(!!window.ActiveXObject || "ActiveXObject" in window){
return true;
}else{
return false;
}
},
简单深拷贝
function deepClone(obj){
var newObj= obj instanceof Array ? []:{};
for(var item in obj){
var temple= typeof obj[item] == 'object' ? deepClone(obj[item]):obj[item];
newObj[item] = temple;
}
return newObj;
}