js工具类函数

//表格金额格式化
const moenyToStr = (money, max = 11) => {
    if (Number(money) !== Number(money)) {
        return money
    }
    let str = String(money)
    const parts = str.split('.')
    str = parts.join('')
    str = str.padEnd(parts[0].length + 2, '0')
    if (str.length > max) {
        return ''.padStart(max, '11')
    }
    str = str.padStart(max, ' ')
    return str
}
//随机生成不重复的的流水号
const RondomPass = (number) => {
    let arr = new Array;
    let arr1 = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9");
    for (let i = 0; i < number; i++) {
        let n = Math.floor(Math.random() * 10);
        arr[i] = arr1[n];
    };
    return arr.join("");
};

const TimeStamp = () => {
    let nowTime = new Date().getTime();
    let nowTimestr = nowTime.toString().substring();
    return nowTimestr + RondomPass(9);
};
//获取当点年月日
const NowDate = (format = false) => {
    let date = new Date();
    let year = date.getFullYear();
    let month = date.getMonth() + 1;
    month = month < 10 ? '0' + month : month;
    let day = date.getDate();
    day = day < 10 ? '0' + day : day;
    return (format ? `${year}-${month}-${day}` : `${year}${month}${day}`);
};
//获取当前时分秒
const NowTime = () => {
    let date = new Date();
    let h = date.getHours();
    h = h < 10 ? '0' + h : h;
    let m = date.getMinutes();
    m = m < 10 ? '0' + m : m;
    let s = date.getSeconds();
    s = s < 10 ? '0' + s : s;
    return `${h}${m}${s}`;
};
//秒转换时分秒
second2String(sec){
    var hours   = Math.floor(sec/ 3600)
    var minutes = Math.floor(sec % 3600 / 60)
    var seconds = Math.floor(sec % 3600 % 60)
    var hourStr = String(hours)
    var minStr  = String(minutes)
    var secStr  = String(seconds)
    return minStr + "′" + secStr + "″"
},
//倒计时
class Countdown {
   constructor(options) {
        let { endTime } = options;
        this.endTime = endTime ? new Date(endTime) : new Date('2022/1/31');
    }

    init() {
        setInterval(() => {
            this.runTime(); //输出
        }, 1000);
    }

    runTime() {
        const nowTime = new Date();
        const diffTime = this.endTime.getTime() - nowTime.getTime();
        const day = Math.floor(diffTime / (1000 * 60 * 60 * 24));
        const hour = Math.floor(diffTime / (1000 * 60 * 60) % 24);
        const minute = Math.floor(diffTime / (1000 * 60) % 60);
        const second = Math.floor(diffTime / 1000 % 60);
        return `${day}${hour}${minute}${second}`
    }
}

const time = new Countdown();
time.init();



const countdown = (endtime = '') => {
 const nowTime = new Date();
    const endTime = endtime ? new Date(endtime) : new Date('2022/1/31');
    const diffTime = this.endTime.getTime() - nowTime.getTime();
    const day = Math.floor(diffTime / (1000 * 60 * 60 * 24));
    const hour = Math.floor(diffTime / (1000 * 60 * 60) % 24);
    const minute = Math.floor(diffTime / (1000 * 60) % 60);
    const second = Math.floor(diffTime / 1000 % 60);
    return `${day}${hour}${minute}${second}`
}
//时间差
const TimeDifference = (startime, endTime) => {
    const stime = new Date(startime).getTime();
    const etime = new Date(endTime).getTime();
    const diffTime = etime - stime;
    const day = Math.floor(diffTime / (1000 * 60 * 60 * 24));
    const hour = Math.floor(diffTime / (1000 * 60 * 60) % 24);
    const minute = Math.floor(diffTime / (1000 * 60) % 60);
    const second = Math.floor(diffTime / 1000 % 60);
    return `${day}${hour}${minute}${second}`
};
//时间差 月
const TimeDifference = (startTime = '', endTime) => {
    startTime = startTime ? startTime : NowDate(true);
    let start = new Date(startTime.replace(/\-/g, "/"));
    let end = new Date(endTime.replace(/\-/g, "/"));
    let startYear = start.getFullYear();
    let startMonth = start.getMonth();
    let endYear = end.getFullYear();
    let endMonth = end.getMonth();
    let monthCount = (endYear - startYear) * 12 + endMonth - startMonth;
    return Number(monthCount);
};
//时间格式化
const dateFormat = (timestamp, formats) => {
 // formats格式包括
  // 1. Y-m-d
  // 2. Y-m-d H:i:s
  // 3. Y年m月d日
  // 4. Y年m月d日 H时i分
  formats = formats || 'Y-m-d';s
  let zero = function (value) {
      if (value < 10) {
          return '0' + value;
      }
      return value;
  };
  let myDate = timestamp ? new Date(timestamp) : new Date();
  let year = myDate.getFullYear();
  let month = zero(myDate.getMonth() + 1);
  let day = zero(myDate.getDate());
  let hour = zero(myDate.getHours());
  let minite = zero(myDate.getMinutes());
  let second = zero(myDate.getSeconds());
  return formats.replace(/Y|m|d|H|i|s/ig, function (matches) {
      return ({
          Y: year,
          m: month,
          d: day,
          H: hour,
          i: minite,
          s: second
      })[matches];
  });
};
//判断图片路径是否是以http || https开头
function isImgageUrl(src){
	const result = (/(http|https):\/\/([\w.]+\/?)\S*/).test(src);
	return result;
}

const checkUrl = (val) => {
	const result = (/^((ht|f)tps?):\/\/([\w-]+(\.[\w-]+)*\/?)+(\?([\w\-\.,@?^=%&:\/~\+#]*)+)?$/.test(val));
	return result;
};


//去掉字符串中的换行、空格
function toolts(str){
     return str.replace(/[\n\r\s]/g,'');
 }
//获取uuid
const getuuid = () => {
    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
        let r = Math.random() * 16 | 0,
            v = c == 'x' ? r : (r & 0x3 | 0x8);
        return v.toString(16);
    })
};
//交集
arrHave(oldArr,newArr){
	return oldArr.concat(newArr).filter(v => !oldArr.includes(v))
},
//差集
arrNohave(oldArr,newArr){
	return oldArr.concat(newArr).filter((v, i, arr) => {
		return this.test(v,arr)==1;
	});
},
test(im,ls){ //用对象属性出现的次数来判断差
	let i = 0;
	ls.forEach(item=>{
		if(item.rights==im.rights){
			i++
		}
	})
	return i
},
//base64加密解密字符串
const Base64 = {
	//加密
    encode(str) {
        return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g,
            function toSolidBytes(match, p1) {
                return String.fromCharCode('0x' + p1);
            }));
    },
	//解密
    decode(str) {
        return decodeURIComponent(atob(str).split('').map(function (c) {
            return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
        }).join(''));
    }
}
//价格格式化
const number_format = (number)=>{
	let decimals , dec_point = "." , thousands_sep = ",";
	number = number.toString();
	if(number.indexOf('.') == -1){
		decimals = '0';
	}else{
		decimals = number.substr(number.indexOf('.') + 1).length;
	}
	number = (number + '').replace(/[^0-9+-Ee.]/g, '');
	var n = !isFinite(+number) ? 0 : +number,
	prec = !isFinite(+decimals) ? 0 : 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.floor(n * k) / k;
	};
	s = (prec ? toFixedFix(n, prec) : '' + Math.floor(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);
};
//价格格式化
const number_format = (num) => {
    num = num.toString().replace(/\$|\,/g, '');
    if (isNaN(num))
        num = "0";
    let sign = (num == (num = Math.abs(num)));
    num = Math.floor(num * 100 + 0.50000000001);
    let cents = num % 100;
    num = Math.floor(num / 100).toString();
    if (cents < 10)
        cents = "0" + cents;
    for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++) {
        num = num.substring(0, num.length - (4 * i + 3)) + ',' +
            num.substring(num.length - (4 * i + 3));
    }
    return (((sign) ? '' : '-') + num + '.' + cents);
};
//节流
const throttle = (method, delay) => {
    let timeout = null,
        startTime = new Date().getTime();
    return function () {
        let _this = this,
            args = arguments,
            curTime = new Date().getTime();
        clearTimeout(timeout);
        if (curTime - startTime >= delay) {
            method.apply(_this, args);
            startTime = curTime;
        } else {
            timeout = setTimeout(() => {
                method.apply(_this, args);
                startTime = curTime;
            }, delay);
        }
    };
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值