工具函数
isFn()
function isFn(fn) {
return typeof fn === "function";
}
isArr()
function isArr(arr) {
return Array.isArray(arr);
}
isStr()
function isStr(str) {
return typeof str === "string";
}
isNum()
function isNum(num) {
return typeof num === "number" && isFinite(num);
}
toBool()
function toBool(obj) {
return !!obj;
}
isNumStr()
function isNumStr(str) {
return str.search(/^([1-9]\d*|0)(\.\d+)?$/) !== -1;
}
isSet()
function isSet(data) {
return data instanceof Set;
}
isMap()
function isMap(data) {
return data instanceof Map;
}
isNull()
function isNull(data) {
return data === null;
}
trim()
function trim(str, isGlobal = false) {
var result;
result = str.replace(/(^\s+)|(\s+$)/g, "");
if (isGlobal) {
result = result.replace(/\s/g, "");
}
return result;
}
isObj()
function isObj(obj) {
return typeof obj === "object";
}
isEven()
function isEven(num) {
return !!!(num % 2);
}
hasBrackets()
function hasBrackets(str) {
return str.search(/\(+|\)+/gim) !== -1;
}
emptyToNull()
function emptyToNull(data) {
if (data instanceof Array) {
for (let item of data) {
if (item instanceof Object) {
emptyToNull(item);
} else {
if (new String(data[item]).trim() === "") {
data[item] = null;
}
}
}
} else {
for (let prop in data) {
if (prop instanceof Object) {
emptyToNull(prop);
} else {
if (new String(data[prop]).trim() === "") {
data[prop] = null;
}
}
}
}
return data;
}
dbBrackets()
function dbBrackets(str) {
const strArr = str.split("");
const breacketNum = strArr.reduce((acc, next) => {
if (next === "(") {
acc += 1;
}
if (next === ")") {
acc -= 1;
}
if (acc === -1) {
acc = NaN;
}
return acc;
}, 0);
return breacketNum === 0 ? str : false;
}
warpFn()
function warpFn(target, fns, ...warpData) {
const arrFn = isArr(fns) ? [] : {};
try {
return lMap(fns, {
init: arrFn,
callback(acc, key, index) {
let flag = isArr(fns) ? index : key;
acc[flag] = (...args) => {
args = [...args, ...warpData];
return toBool(warpData)
? fns[flag].apply(target, args)
: fns[flag](args);
};
return acc;
},
});
} catch (e) {
console.log("方法包装失败:", e);
return fns;
}
}