FED

©FrontEndDev.org
2015 - 2024
web@2.22.0 api@2.20.0

一行代码实现数值缩写

什么叫数值缩写

1 => 1
1000 => 1K
10000 => 10K
1000000 => 1M
1000000000 => 1G

数值缩写是将长数值转换成短数值的表示。之前,这里的缩写单位弄混淆了,详见下表:

PrefixSymbol(s)Power of 10Power of 2
yocto-y10^-24--
zepto-z10^-21--
atto-a10^-18--
femto-f10^-15--
pico-p10^-12--
nano-n10^-9--
micro-m10^-6--
milli-m10^-3--
centi-c10^-2--
deci-d10^-1--
(none)--10^02^0
deka-D10^1--
hecto-h10^2--
kilo-k or K10^32^10
mega-M10^62^20
giga-G10^92^30
tera-T10^122^40
peta-P10^152^50
exa-E10^182^60
zetta-Z10^212^70
yotta-Y10^242^80

实现

var abbr = function (number) {
    var abbrList = ['', 'K', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y'];
    var step = 1000;
    var i = 0;
    var j = abbrList.length;

    while (number >= step && ++i < j) {
        number = number / step;
    }

    if (i === j) {
        i = j - 1;
    }

    return number + abbrList[i];
};

通过 while 循环来相除 1000 步进值,直到相除次数到达缩写长度。