Konvertieren Sie lange Zahlen in abgekürzte Zeichenfolgen in JavaScript mit einer besonderen Anforderung an die Kürze

Wie würde man in JavaScript eine Funktion schreiben, die eine gegebene [edit:positive ganze Zahl] Zahl (unter 100 Milliarden) in eine 3-Buchstaben-Abkürzung - wobei 0-9 und az / AZ als Buchstaben gezählt werden, der Punkt (wie er in vielen proportionalen Schriftarten so klein ist) jedoch nicht und in ignoriert wird Bedingungen der Buchstabenbegrenzung?

Diese Frage bezieht sich aufDieser hilfreiche Thread, aber es ist nicht dasselbe; zum Beispiel, wo diese Funktion sich drehen würde, z. "123456 -> 1,23k" ("123,5k" sind 5 Buchstaben) Ich suche nach etwas, das "123456 -> 0,1m" ("0 [.] 1m" sind 3 Buchstaben) ausführt. Dies wäre beispielsweise die Ausgabe der erhofften Funktion (linkes Original, rechter idealer Rückgabewert):

0                      "0"
12                    "12"
123                  "123"
1234                "1.2k"
12345                "12k"
123456              "0.1m"
1234567             "1.2m"
12345678             "12m"
123456789           "0.1b"
1234567899          "1.2b"
12345678999          "12b"

Vielen Dank!

Update: Danke! Eine Antwort ist in und funktioniert gemäß den Anforderungen, wenn die folgenden Änderungen vorgenommen werden:

function abbreviateNumber(value) {
    var newValue = value;
    if (value >= 1000) {
        var suffixes = ["", "k", "m", "b","t"];
        var suffixNum = Math.floor( (""+value).length/3 );
        var shortValue = '';
        for (var precision = 2; precision >= 1; precision--) {
            shortValue = parseFloat( (suffixNum != 0 ? (value / Math.pow(1000,suffixNum) ) : value).toPrecision(precision));
            var dotLessShortValue = (shortValue + '').replace(/[^a-zA-Z 0-9]+/g,'');
            if (dotLessShortValue.length <= 2) { break; }
        }
        if (shortValue % 1 != 0)  shortNum = shortValue.toFixed(1);
        newValue = shortValue+suffixes[suffixNum];
    }
    return newValue;
}

Antworten auf die Frage(11)

Ihre Antwort auf die Frage