些项目有些方法会频繁用到,直接封装好需要直接引入。欢迎提出不同见解0.0
1.清空本地缓存数据
export function clearLocalData() {
localStorage.clear();
sessionStorage.clear();
}
2.输入值自动加千位分隔符
export function toThousands(num) {
return (
num &&
num.toString().replace(/\d+/, function(s) {
return s.replace(/(\d)(?=(\d{3})+$)/g, '$1,');
})
);
}
3.校验是否为正整数
export function isInteger(value) {
return /^\d+$/.test(value);
}
4.校验10位整数2位小数(可自行修改)
export function validNumberTen(value) {
return /^[0-9]{1,10}(.\d{1,10})?$/.test(value);
}
5.获取指定日期第一天或最后一天
//第一天
export function getFirstDate(date) {
const d = new Date(date);
const y = d.getFullYear();
const m = d.getMonth();
return new Date(y, m, 1);
}
//最后一天
export function getLastDate(date) {
const d = new Date(date);
const y = d.getFullYear();
const m = d.getMonth();
return new Date(y, m + 1, 0);
}
6.浮点值的运算-除法
export function accDiv(arg1, arg2) {
var t1 = 0,
t2 = 0,
r1,
r2;
try {
t1 = arg1.toString().split('.')[1].length;
} catch (e) {}
try {
t2 = arg2.toString().split('.')[1].length;
} catch (e) {}
r1 = Number(arg1.toString().replace('.', ''));
r2 = Number(arg2.toString().replace('.', ''));
return (r1 / r2) * Math.pow(10, t2 - t1);
}
7.返回指定月份当前所属季度
export function getQuarterFromMonth(month) {
let quarter = null;
if (month >= 1 && month <= 3) {
quarter = 1;
} else if (month >= 4 && month <= 6) {
quarter = 2;
} else if (month >= 7 && month <= 9) {
quarter = 3;
} else if (month >= 10 && month <= 12) {
quarter = 4;
}
return quarter;
}
8.获取指定季度第一天
export function getQuarterFirstDate(quarter, year) {
const currentDate = `${year}-${3 * (quarter - 1) + 1}`;
let date = new Date(currentDate);
let month = date.getMonth() + 1;
if (1 <= month && month <= 3) {
date.setMonth(0);
} else if (4 <= month && month <= 6) {
date.setMonth(3);
} else if (7 <= month && month <= 9) {
date.setMonth(6);
} else {
date.setMonth(9);
}
return moment(date).format('YYYY-MM-DD');
}
9.获取指定季度最后一天
export function getQuarterLastDate(quarter, year) {
const currentDate = `${year}-${3 * (quarter - 1) + 1}`;
let date = new Date(currentDate);
let month = date.getMonth() + 1;
if (1 <= month && month <= 3) {
date.setMonth(3);
} else if (4 <= month && month <= 6) {
date.setMonth(6);
} else if (7 <= month && month <= 9) {
date.setMonth(9);
} else {
date.setMonth(12);
}
date.setDate(0);
return moment(date).format('YYYY-MM-DD');
}
10.将人民币金额转换为大写 同时支持小数、负数
export function convertPrice(price) {
if (isNaN(Math.abs(price))) {
throw new Error('传递的金额格式不正确,参考是否非数字或者NaN');
}
let fraction = ['角', '分'];
let digit = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
let unit = [
['元', '万', '亿'],
['', '拾', '佰', '仟']
];
let head = price < 0 ? '欠' : '';
price = Math.abs(price);
let s = '';
for (let i = 0; i < fraction.length; i++) {
s += (digit[Math.floor(price * 10 * Math.pow(10, i)) % 10] + fraction[i]).replace(/零./, '');
}
s = s || '整';
price = Math.floor(price);
for (let i = 0; i < unit[0].length && price > 0; i++) {
let p = '';
for (let j = 0; j < unit[1].length && price > 0; j++) {
p = digit[price % 10] + unit[1][j] + p;
price = Math.floor(price / 10);
}
s = p.replace(/(零.)*零$/, '').replace(/^$/, '零') + unit[0][i] + s;
}
return (
head +
s
.replace(/(零.)*零元/, '元')
.replace(/(零.)+/g, '零')
.replace(/^整$/, '零元整')
);
}