class UtilWrapper {
/**
* @constructor
* */
constructor(props) {
// super(props);
}
/**
* 简单 unique 一维数组
* @param {Array} array - 正常的一维数组
*
* */
uniqueArray(array) {
if (!this.isArrayLike(array)) {
throw new TypeError('请传递正常的一维数组')
}
const uniqueArray = [...new Set(array)];
return uniqueArray
}
/**
*
* 快速循环
* @param {array} array - 类数组对象
* @param {function} processor - 函数对象 每次回调格式为 processor(array[i],index)
* @example
*
* processor(array[i],index)
*
* */
rapidForLoop(array, processor) {
if ('function' != typeof processor) {
throw new TypeError('请传递处理函数')
return
}
if (!this.isArrayLike(array)) {
throw new TypeError('该对象不是一个可迭代对象')
return
}
for (let i = 0, length = array.length; i < length; i++) {
/**
* @inner
* @param array - 数组的每一项
* @param index, - 数组的索引
* */
processor(array[i], i)
}
}
/**
* 是否是类数组对象
* @param {array} item - 类数组对象
* */
isArrayLike(item) {
return (
Array.isArray(item) ||
(!!item &&
typeof item === "object" &&
typeof (item.length) === "number" &&
(item.length === 0 ||
(item.length > 0 &&
(item.length - 1) in item)
)
)
);
}
/**
* 快速取整
*
* @param {number} num - 浮点数
*
*
* */
quickRounding(num) {
return num | 0
}
/**
* 安全数值
* @param {number | string } exp - 算数表达式
*
* @param {number } digits - 精度参数须在 0 与20 之间
* */
safeNumber(exp, digits = 10) {
if ('string'==typeof exp) {
return parseFloat(exp)
}
return parseFloat(exp.toFixed(digits));
}
}
module.exports = {utilWrapper: new UtilWrapper()}