开个博客记录日常开发中遇到的实用代码块
JS获取最近日期
function getDate() {
var myDate = new Date();
var tYear = myDate.getFullYear()
var tMonth = myDate.getMonth()
tMonth = doHandleZero(tMonth + 1)
return tYear + "-" + tMonth + "-01"
}
function getDay(day){
var today = new Date();
var targetday_milliseconds=today.getTime() + 1000*60*60*24*day;
today.setTime(targetday_milliseconds);
var tYear = today.getFullYear();
var tMonth = today.getMonth();
var tDate = today.getDate();
tMonth = doHandleMonth(tMonth + 1);
tDate = doHandleMonth(tDate);
return tYear+"-"+tMonth+"-"+tDate;
}
function doHandleMonth(month){
var m = month;
if(month.toString().length == 1){
m = "0" + month;
}
return m;
}
//getDay(30)30天后
//getDay(-30)30天前
三位分节法展示数字
toThousands(num) {
var result = '', counter = 0;
var dot = String(num).indexOf(".");
if(dot != -1){
// 获取小数点后面的数字(indexOf和substring都不支持数字,所以要先转字符串才可以用)
var dotCnt = String(num).substring(dot+1,num.length);
// 获取小数点前面的数字
num = String(num).split('.')[0]
num = (num || 0).toString();
for (var i = num.length - 1; i >= 0; i--) {
counter++;
result = num.charAt(i) + result;
if (!(counter % 3) && i != 0) {
result = ',' + result; }
}
result = result + '.' + dotCnt;
return result;
}else{
// alert("没有小数点");
return (num || 0).toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,');
}
}
对象转为二维数组
Object.entries()
let obj= {
school: 'aaa',
name: 'bbb',
age: 1
}
const arr = Object.entries(obj)
console.log(arr)
//[ [ 'producer', 'aaa' ], [ 'name', 'bbb' ], [ 'age', 1] ]
取出对象的值
Object.values()
let obj= {
school: 'aaa',
name: 'bbb',
age: 1
}
const arr = Object.values(obj)
console.log(arr)
//['aaa','bbb',1]
找出数据中某一项
Array.find()
const pets = [{
type: 'Dog',
name: 'Max'
},
{
type: 'Cat',
name: 'Karl'
},
{
type: 'Dog',
name: 'Tommy'
}
]
pet = pets.find(pet => pet.type === 'Dog' && pet.name === 'Tommy')
console.log(pet) // { type: 'Dog', name: 'Tommy' }
有条件的函数调用
function fn1() {
console.log('I am Function 1')
}
function fn2() {
console.log('I am Function 2')
}
/*
长的写法
*/
let checkValue = 3;
if (checkValue === 3) {
fn1()
} else {
fn2()
}
简短的写法:
(checkValue === 3 ? fn1 : fn2)()
JS数字金额转中文大写
1.新建tool.js文件
// 数字金额转大写
export const numToCny=(money)=>{
// 汉字的数字
var cnNums = new Array('零', '壹', '贰', '叁', '肆', '伍', '陆',
'柒', '捌', '玖');
// 基本单位
var cnIntRadice = new Array('', '拾', '佰', '仟');
// 对应整数部分扩展单位
var cnIntUnits = new Array('', '万', '亿', '兆');
// 对应小数部分单位
var cnDecUnits = new Array('角', '分', '毫', '厘');
// 整数金额时后面跟的字符
var cnInteger = '整';
// 整型完以后的单位
var cnIntLast = '元';
// 最大处理的数字
var maxNum = 999999999999999.9999;
// 金额整数部分
var integerNum;
// 金额小数部分
var decimalNum;
// 输出的中文金额字符串
var chineseStr = '';
// 分离金额后用的数组,预定义
var parts;
if (money == '') {
return '';
}
money = parseFloat(money);
if (money >= maxNum) {
// 超出最大处理数字
return '';
}
if (money == 0) {
chineseStr = cnNums[0] + cnIntLast + cnInteger;
return chineseStr;
}
// 转换为字符串
money = money.toString();
if (money.indexOf('.') == -1) {
integerNum = money;
decimalNum = '';
} else {
parts = money.split('.');
integerNum = parts[0];
decimalNum = parts[1].substr(0, 4);
}
// 获取整型部分转换
if (parseInt(integerNum, 10) > 0) {
var zeroCount = 0;
var IntLen = integerNum.length;
for (var i = 0; i < IntLen; i++) {
var n = integerNum.substr(i, 1);
var p = IntLen - i - 1;
var q = p / 4;
var m = p % 4;
if (n == '0') {
zeroCount++;
} else {
if (zeroCount > 0) {
chineseStr += cnNums[0];
}
// 归零
zeroCount = 0;
chineseStr += cnNums[parseInt(n)]
+ cnIntRadice[m];
}
if (m == 0 && zeroCount < 4) {
chineseStr += cnIntUnits[q];
}
}
chineseStr += cnIntLast;
}
// 小数部分
if (decimalNum != '') {
var decLen = decimalNum.length;
for (var i = 0; i < decLen; i++) {
var n = decimalNum.substr(i, 1);
if (n != '0') {
chineseStr += cnNums[Number(n)] + cnDecUnits[i];
}
}
}
if (chineseStr == '') {
chineseStr += cnNums[0] + cnIntLast + cnInteger;
} else if (decimalNum == '') {
chineseStr += cnInteger;
}
return chineseStr;
}
2.组件中使用
<template>
</template>
<script>
import {
numToCny } from '@/libs/tools'
export default {
data(){
return{
}
},
mounted(){
let num=numToCny('123456.78');
}
}
</script>