cyber-web-ui
Version:
spring-cyber前端ui框架
88 lines (87 loc) • 2.52 kB
JavaScript
import Big from './big.js';
/**
* @param {String} method 要调用的方法
* @param {String|Number} num1 第一个参数
* @param {String|Number|String[]|Number[]} num2
*/
var bigjs = function bigjs(method, num1, num2) {
// 没有该方法
if (!new Big(1)[method]) {
throw Error("".concat(method, " is not a function"));
}
if (!/^plus$|^minus$|^times$|^div$/.test(method)) {
// 调用自定义方法
if (bigjs[method]) return bigjs[method](num1, num2);
// 没有该方法
else {
throw Error("".concat(method, " is not a function"));
}
}
// 计算数值
var sum = new Big(bigjs.disposeValue(num1));
num2 = bigjs.disposeValue(num2);
if (Array.isArray(num2)) {
num2.forEach(function (item) {
sum = sum[method](new Big(item));
});
} else {
sum = sum[method](new Big(num2));
}
return sum.toNumber();
};
/**
* @function disposeValue 处理数据
* @param {any|any[]} target 要处理的数据
*/
bigjs.disposeValue = function (target) {
if (typeof target == 'number') return target;
if (Array.isArray(target)) {
return target.map(function (item) {
return bigjs.disposeValue(item);
});
} else {
target = Number(target);
return isNaN(target) ? 0 : target;
}
};
/**
* @function plus 加法
* @param {String|Number} num1 第一个参数
* @param {String|Number|String[]|Number[]} num2 第二个参数,可以传数组
*/
bigjs.plus = function (num1, num2) {
return bigjs('plus', num1, num2);
};
/**
* @function minus 减法
* @param {String|Number} num1 第一个参数
* @param {String|Number|String[]|Number[]} num2 第二个参数,可以传数组
*/
bigjs.minus = function (num1, num2) {
return bigjs('minus', num1, num2);
};
/**
* @function times 乘法
* @param {String|Number} num1 第一个参数
* @param {String|Number|String[]|Number[]} num2 第二个参数,可以传数组
*/
bigjs.times = function (num1, num2) {
return bigjs('times', num1, num2);
};
/**
* @function div 除法
* @param {String|Number} num1 第一个参数
* @param {String|Number|String[]|Number[]} num2 第二个参数,可以传数组
*/
bigjs.div = function (num1, num2) {
return bigjs('div', num1, num2);
};
/**
* @function pow 幂运算
* @param {String|Number} num1 第一个参数
* @param {Number} num2 第二个参数,需要传正整数
*/
bigjs.pow = function (num1, num2) {
return new Big(bigjs.disposeValue(num1)).pow(num2).toNumber();
};
export default bigjs;