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));