JSFiddle - React, Tailwind, and code Playground
by prozoroff
JavaScript
const numberFormat = number => number + '';
const write = t => document.body.innerHTML += `<p>${t}</p>`
function defaultLabelFormatter(value,power) {
var numericSymbols = ['k', 'M', 'G', 'T', 'P', 'E'],
numSymMagnitude = 1000,
i = numericSymbols && numericSymbols.length,
multi,
ret,
numericSymbolDetector = Math.abs(value);
if(power){
ret = numberFormat(value / Math.pow(1000, power)) + numericSymbols[power-1];
} else if (i && numericSymbolDetector >= 1000) {
while (i-- && ret === undefined) {
multi = Math.pow(numSymMagnitude, i + 1);
if (
numericSymbolDetector >= multi &&
numericSymbols[i] !== null &&
value !== 0
) {
ret = numberFormat(value / multi) + numericSymbols[i];
}
}
}
if (ret === undefined) {
if (Math.abs(value) >= 10000) {
ret = numberFormat(value);
}
}
return ret;
}
write('1 000: ' + defaultLabelFormatter(1230,1));
write('10 000: ' + defaultLabelFormatter(10000));
write('100 000: ' + defaultLabelFormatter(100000));
write('1 000 000: ' + defaultLabelFormatter(1000000));
write('10 000 000: ' + defaultLabelFormatter(10000000));
write('100 000 000: ' + defaultLabelFormatter(100000000));
write('1 000 000 000: ' + defaultLabelFormatter(1000000000));