@terminus/ngx-tools
Version:
[![CircleCI][circle-badge]][circle-link] [![codecov][codecov-badge]][codecov-project] [![semantic-release][semantic-release-badge]][semantic-release] [![MIT License][license-image]][license-url] <br> [![NPM version][npm-version-image]][npm-url] [![Github
36 lines • 4 kB
JavaScript
/**
* Helper function to abbreviate a number
*
* @param input - The number to be abbreviated.
* @param decimalPlace - The decimals users define for final abbreviated number. Default to 1.
* @returns The abbreviated number
*
* @example
* abbreviateNumber(1234, '1') // Returns: '1.2K'
*/
export function abbreviateNumber(input, decimalPlace = 1) {
const SCALE_NUMBER = 3;
const MATH_POWER = 10;
if (!input) {
return '';
}
const baseNumberAndExponent = input
.toExponential()
.split('e+')
.map(el => +el);
if (baseNumberAndExponent[1] < SCALE_NUMBER) {
return input.toString();
}
const scaleLevel = baseNumberAndExponent[1] % SCALE_NUMBER;
baseNumberAndExponent[0] = baseNumberAndExponent[0] * Math.pow(MATH_POWER, scaleLevel);
const calculatedScale = [
'',
'K',
'M',
'B',
'T',
][(baseNumberAndExponent[1] - scaleLevel) / SCALE_NUMBER];
const newNumber = baseNumberAndExponent[0].toFixed(decimalPlace).toString();
return newNumber + calculatedScale;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJicmV2aWF0ZS1udW1iZXIuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdGVybWludXMvbmd4LXRvb2xzL3V0aWxpdGllcy8iLCJzb3VyY2VzIjpbImFiYnJldmlhdGUtbnVtYmVyL2FiYnJldmlhdGUtbnVtYmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxLQUFvQixFQUFFLFlBQVksR0FBRyxDQUFDO0lBQ3JFLE1BQU0sWUFBWSxHQUFHLENBQUMsQ0FBQztJQUN2QixNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUM7SUFFdEIsSUFBSSxDQUFDLEtBQUssRUFBRTtRQUNWLE9BQU8sRUFBRSxDQUFDO0tBQ1g7SUFDRCxNQUFNLHFCQUFxQixHQUFHLEtBQUs7U0FDaEMsYUFBYSxFQUFFO1NBQ2YsS0FBSyxDQUFDLElBQUksQ0FBQztTQUNYLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFbEIsSUFBSSxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsR0FBRyxZQUFZLEVBQUU7UUFDM0MsT0FBTyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7S0FDekI7SUFFRCxNQUFNLFVBQVUsR0FBRyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsR0FBRyxZQUFZLENBQUM7SUFDM0QscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEdBQUcscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDdkYsTUFBTSxlQUFlLEdBQUc7UUFDdEIsRUFBRTtRQUNGLEdBQUc7UUFDSCxHQUFHO1FBQ0gsR0FBRztRQUNILEdBQUc7S0FDSixDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsWUFBWSxDQUFDLENBQUM7SUFFMUQsTUFBTSxTQUFTLEdBQUcscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVFLE9BQU8sU0FBUyxHQUFHLGVBQWUsQ0FBQztBQUNyQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiB0byBhYmJyZXZpYXRlIGEgbnVtYmVyXG4gKlxuICogQHBhcmFtIGlucHV0IC0gVGhlIG51bWJlciB0byBiZSBhYmJyZXZpYXRlZC5cbiAqIEBwYXJhbSBkZWNpbWFsUGxhY2UgLSBUaGUgZGVjaW1hbHMgdXNlcnMgZGVmaW5lIGZvciBmaW5hbCBhYmJyZXZpYXRlZCBudW1iZXIuIERlZmF1bHQgdG8gMS5cbiAqIEByZXR1cm5zIFRoZSBhYmJyZXZpYXRlZCBudW1iZXJcbiAqXG4gKiBAZXhhbXBsZVxuICogYWJicmV2aWF0ZU51bWJlcigxMjM0LCAnMScpICAgICAgICAgICAgICAvLyBSZXR1cm5zOiAnMS4ySydcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFiYnJldmlhdGVOdW1iZXIoaW5wdXQ6IG51bWJlciB8IG51bGwsIGRlY2ltYWxQbGFjZSA9IDEpOiBzdHJpbmcge1xuICBjb25zdCBTQ0FMRV9OVU1CRVIgPSAzO1xuICBjb25zdCBNQVRIX1BPV0VSID0gMTA7XG5cbiAgaWYgKCFpbnB1dCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuICBjb25zdCBiYXNlTnVtYmVyQW5kRXhwb25lbnQgPSBpbnB1dFxuICAgIC50b0V4cG9uZW50aWFsKClcbiAgICAuc3BsaXQoJ2UrJylcbiAgICAubWFwKGVsID0+ICtlbCk7XG5cbiAgaWYgKGJhc2VOdW1iZXJBbmRFeHBvbmVudFsxXSA8IFNDQUxFX05VTUJFUikge1xuICAgIHJldHVybiBpbnB1dC50b1N0cmluZygpO1xuICB9XG5cbiAgY29uc3Qgc2NhbGVMZXZlbCA9IGJhc2VOdW1iZXJBbmRFeHBvbmVudFsxXSAlIFNDQUxFX05VTUJFUjtcbiAgYmFzZU51bWJlckFuZEV4cG9uZW50WzBdID0gYmFzZU51bWJlckFuZEV4cG9uZW50WzBdICogTWF0aC5wb3coTUFUSF9QT1dFUiwgc2NhbGVMZXZlbCk7XG4gIGNvbnN0IGNhbGN1bGF0ZWRTY2FsZSA9IFtcbiAgICAnJyxcbiAgICAnSycsXG4gICAgJ00nLFxuICAgICdCJyxcbiAgICAnVCcsXG4gIF1bKGJhc2VOdW1iZXJBbmRFeHBvbmVudFsxXSAtIHNjYWxlTGV2ZWwpIC8gU0NBTEVfTlVNQkVSXTtcblxuICBjb25zdCBuZXdOdW1iZXIgPSBiYXNlTnVtYmVyQW5kRXhwb25lbnRbMF0udG9GaXhlZChkZWNpbWFsUGxhY2UpLnRvU3RyaW5nKCk7XG4gIHJldHVybiBuZXdOdW1iZXIgKyBjYWxjdWxhdGVkU2NhbGU7XG59XG5cbiJdfQ==