evmtools-node
Version:
このライブラリは、プライムブレインズ社で利用している「進捗管理ツール(Excel)」ファイルを読み込み、 プロジェクトの進捗状況や要員別の作業量を可視化するためのライブラリです。
66 lines • 2.15 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.calcRate = exports.average = exports.round = exports.subtract = exports.sum = exports.isValidNumber = void 0;
const isValidNumber = (value) => typeof value === 'number' && !Number.isNaN(value);
exports.isValidNumber = isValidNumber;
/**
* 足し算する
*/
const sumFunc = (prev, current) => (current ? prev + current : prev);
const sum = (numbers, scale) => {
if (numbers) {
// const nonNullDatas = numbers.filter((number) => !!number) // undefinedを除去
const nonNullDatas = numbers.filter((number) => number != null); // null または undefined を除去
if (nonNullDatas.length > 0) {
const result = nonNullDatas.reduce(sumFunc, 0);
return (0, exports.round)(result, scale);
}
}
};
exports.sum = sum;
const subtract = (a, b) => {
if (typeof a !== 'number' || typeof b !== 'number') {
return undefined;
}
return a - b;
};
exports.subtract = subtract;
/**
* 四捨五入して、scale位にする
* @param num
* @param scale
* @returns
*/
const round = (num, scale = 10) => Math.round(num * 10 ** scale) / 10 ** scale;
exports.round = round;
/**
*
* @param numbers 平均
* @returns
*/
const average = (numbers, scale = 3) => {
if (numbers) {
// const nonNullDatas = numbers.filter((data) => !!data) // undefinedを除去
const nonNullDatas = numbers.filter((data) => data != null); // null または undefined を除去
// console.log(nonNullDatas)
if (nonNullDatas.length > 0) {
const result = (0, exports.sum)(nonNullDatas) / nonNullDatas.length;
return (0, exports.round)(result, scale);
}
}
};
exports.average = average;
/**
* a/bを返す。a,b数字かつb!=0 の時だけa/b それ以外はundefined
* @param a
* @param b
* @returns a/b
*/
const calcRate = (a, b) => {
if ((0, exports.isValidNumber)(b) && (0, exports.isValidNumber)(a) && b !== 0) {
return a / b;
}
return undefined;
};
exports.calcRate = calcRate;
//# sourceMappingURL=calcUtils.js.map