常用工具类【时间日期处理,数组排序、去重、过滤,对象深拷贝、字符串去除空格、函数防抖节流、添加水印、金钱格式化、枚举对象取值】
export const formatter = (date) => {
if (date == "" || date == null) {
return;
} else {
date = new Date(date);
return `${date.getFullYear()}-${(date.getMonth() + 1)
.toString()
.padStart(2, "0")}-${date
.getDate()
.toString()
.padStart(2, "0")}`;
}
}
export const arraySort = (arryObj) => {
let tmp;
for (let i = 0; i < arryObj.length; i++) {
for (let j = 0; j < arryObj.length; j++) {
if (arryObj[j] > arryObj[j + 1]) {
tmp = arryObj[j];
arryObj[j] = arryObj[j + 1];
arryObj[j + 1] = tmp;
}
}
}
return arryObj;
}
export const arrayRemoval = (arrayObj) => {
let tmpArray = [];
for (let i = 0; i < arrayObj.length; i++) {
if (tmpArray.indexOf(arrayObj[i]) == -1) {
tmpArray.push(arrayObj[i]);
}
}
return tmpArray;
}
export const arrayFilter = (arrayObj, keyvalue) => {
let tmpArray = [];
for (let i = 0; i < arrayObj.length; i++) {
if (arrayObj[i].toString().indexOf(keyvalue) != -1) {
tmpArray.push(arrayObj[i]);
}
}
return tmpArray;
}
export const cloneObj = (obj) => {
let newobj = obj.constructor === Array ? [] : {};
if (typeof obj !== 'object') {
return;
}
for (let i in obj) {
newobj[i] = typeof obj[i] === 'object' ? cloneObj(obj[i]) : obj[i];
}
return newobj
};
export const removeBlank = (str, status = 1) => {
if (status && status !== 1 && status !== 2 && status !== 3 && status !== 4) return;
switch (status) {
case 1:
return str.replace(/\s/g, "");
case 2:
return str.replace(/(^\s)|(\s*$)/g, "");
case 3:
return str.replace(/(^\s)/g, "");
case 4:
return str.replace(/(\s$)/g, "");
default:
return str;
}
}
export const debounce = (func, wait, immediate) => {
let timeout;
return function() {
let context = this;
let args = arguments;
if (timeout) clearTimeout(timeout);
if (immediate) {
let callNow = !timeout;
timeout = setTimeout(() => {
timeout = null;
}, wait);
if (callNow) func.apply(context, args)
} else {
timeout = setTimeout(() => {
func.apply(context, args)
}, wait);
}
}
}
export const throttle = (func, wait, type) => {
let prevIoUs, timeout;
if (type === 1) {
prevIoUs = 0;
} else if (type === 2) {
timeout = null;
}
return function() {
let context = this;
let args = arguments;
if (type === 1) {
let Now = Date.Now();
if (Now - prevIoUs > wait) {
func.apply(context, args);
prevIoUs = Now;
}
} else if (type === 2) {
if (!timeout) {
timeout = setTimeout(() => {
timeout = null;
func.apply(context, args)
}, wait)
}
}
}
}
const watermark = ({
container = document.body,
width = "300px",
height = "200px",
textAlign = "center",
textBaseline = "middle",
font = "20px Microsoft Yahei",
fillStyle = "rgba(184, 184, 184, 0.6)",
content = "",
rotate = "30",
zIndex = 1000,
} = {}) => {
const args = arguments[0];
const canvas = document.createElement("canvas");
canvas.setAttribute("width", width);
canvas.setAttribute("height", height);
const ctx = canvas.getContext("2d");
ctx.textAlign = textAlign;
ctx.textBaseline = textBaseline;
ctx.font = font;
ctx.fillStyle = fillStyle;
ctx.rotate((Math.PI / 180) * rotate);
ctx.fillText(content, parseFloat(width) / 2, parseFloat(height) / 2);
const base64Url = canvas.toDataURL();
const __wm = document.querySelector(".__wm");
const watermarkDiv = __wm || document.createElement("div");
const styleStr = `
position:absolute;
top:0;
left:0;
width:100%;
height:100%;
z-index:${zIndex};
pointer-events:none;
background-repeat:repeat;
background-image:url('${base64Url}')`;
watermarkDiv.setAttribute("style", styleStr);
watermarkDiv.classList.add("__wm");
if (!__wm) {
container.style.position = "relative";
container.insertBefore(watermarkDiv, container.firstChild);
}
const MutationObserver =
window.MutationObserver || window.WebKitMutationObserver;
if (MutationObserver) {
let mo = new MutationObserver(function() {
const __wm = document.querySelector(".__wm");
if ((__wm && __wm.getAttribute("style") !== styleStr) || !__wm) {
mo.disconnect();
mo = null;
__canvasWM(JSON.parse(JSON.stringify(args)));
}
});
mo.observe(container, {
attributes: true,
subtree: true,
childList: true,
});
}
};
export const enumeration = (enumObj, index) => {
for (let i in enumObj) {
if (i == index) {
return enumObj[i];
} else if (enumObj[i] == index) {
return i;
}
}
}
export const formatMoney = (num) => {
let newNum = num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
return newNum;
}
export default {
watermark
}