Wie trenne ich eine ganze Zahl in einem Array in JavaScript in einzelne Ziffern?

Lesezeit: 3 Minuten

Benutzer-Avatar
magnusbl

Das ist mein Code bisher:

var n = 123456789;
var d = n.toString().length;
var digits = [];
var squaredDigits = [];
for (i = d; i >= 1; i--) {
    var j = k / 10;
    var r = (n % k / j) - 0.5;
    var k = Math.pow(10, i);
    var result = r.toFixed(); 
    digits.push(result);
}

console.log(digits);

Aber wenn ich meinen Code ausführe, bekomme ich das: [9, 1, 2, 3, 4, 5, 6, 7, 8]

Wenn jemand das Problem sieht oder eine bessere Lösung findet, wäre ich sehr dankbar!

Warum nicht einfach so?

var n =  123456789;
var digits = (""+n).split("");

  • Nur eine Anmerkung, dies ergibt ein Array von Zeichenfolgen … keine Zahlen.

    – rgdrei

    28. März 2012 um 19:24 Uhr

  • Guter Punkt. Aber so wie es aussieht, wird die Ziffer dann mit sich selbst multipliziert, was meiner Meinung nach gut funktioniert. Alles, was getan werden muss, ist vorsichtig zu sein und wahrscheinlich zu verwenden parseInt(...,10); zu passenden Zeiten.

    – Niet the Dark Absol

    28. März 2012 um 19:28 Uhr

  • Das Problem ist, dass ich die Ziffern danach quadrieren möchte, und ich glaube, ich kann das nicht mit einer Zeichenfolge tun?

    – magnusbl

    29. März 2012 um 7:37 Uhr

  • for (var i = 0; i < digits.length; i++) { digits[i] = +digits[i]; } wandelt auch jeden Wert in eine ganze Zahl um

    – Martin

    1. Mai 2014 um 15:50 Uhr

  • (“”+num1).split(”).map(Number), um ein Array von Zahlen anstelle einer Zeichenfolge zurückzugeben.

    – Juni Brosas

    4. Januar 2018 um 2:40 Uhr

Wie wäre es mit:

const n = 123456;
Array.from(n.toString()).map(Number);
// [1, 2, 3, 4, 5, 6]

  • Schöne Lösung, klar und leicht verständlich und nutzt ES6-Funktionen. Auch eine der empfohlenen Funktionen hier

    – tw_hoff

    2. Juni 2017 um 5:39 Uhr


  • .map(Number) ist sehr nett!

    – Einsam

    28. Dezember 2017 um 21:40 Uhr

  • Mit Abstand die beste Antwort

    – Luiz Henrique Guerra

    3. August 2019 um 1:27 Uhr

  • Ich liebe diese Lösung – sie zwingt mich dazu, etwas über globale Objekte und ihre Funktionalität zu entdecken

    – rpivovar

    6. September 2019 um 4:29 Uhr

  • Kann jemand erklären, warum .map(Number) so funktioniert, wie es funktioniert?

    – 4cody

    11. Oktober 2020 um 14:34 Uhr

Benutzer-Avatar
Schinken

(123456789).toString(10).split("")

^^ Dies gibt ein Array von Strings zurück

(123456789).toString(10).split("").map(function

^^ Dies gibt ein Array von Ints zurück

  • Dies ergibt auch ein Array von Strings … keine Zahlen

    – rgdrei

    28. März 2012 um 19:25 Uhr

  • Nett! Beachten Sie nur, dass .map in IE 8 oder darunter nicht verfügbar ist.

    – rgdrei

    28. März 2012 um 19:31 Uhr

  • Man würde erwarten map(parseInt) arbeiten aber Array.map ruft die Funktion auch mit dem Index und dem Array selbst auf (war das wirklich nötig?), damit es nicht funktioniert.

    – Tokland

    17. Dezember 2012 um 17:03 Uhr

  • In acht nehmen! Es ist bekannt Falle. Noch ein anderer do-not-read-documentation-but-yell-at-stupid-javascript Fall.

    – Bogdan Slovyagin

    29. Oktober 2016 um 11:06 Uhr


Mir ist klar, dass dies vor einigen Monaten gefragt wurde, aber ich habe eine Ergänzung zu Samccones Antwort, die prägnanter ist, aber ich habe nicht den Vertreter, den ich als Kommentar hinzufügen könnte!

Anstatt von:

(123456789).toString(10).split("").map(function

In Betracht ziehen:

(123456789).toString(10).split("").map(Number)

Benutzer-Avatar
Alexander

Habe die obige Antwort ein wenig geändert. Wir müssen die ‘map’-Methode nicht wirklich explizit aufrufen, da sie bereits als zweites Argument in ‘Array.from’ eingebaut ist. Ab MDN.

Array.from(arrayLike[, mapFn[, thisArg]])

let num = 1234;
let arr = Array.from(String(num), Number);
console.log(arr); // [1, 2, 3, 4]

  • Ich mag es, obwohl es wahrscheinlich angemessen ist, es zu verwenden const wann immer Sie eine Variable nicht neu zuweisen werden

    – Bestimmte Leistung

    5. August 2018 um 0:05 Uhr

Benutzer-Avatar
Shota

const toIntArray = (n) => ([...n + ""].map(v => +v))

  • Ich mag es, obwohl es wahrscheinlich angemessen ist, es zu verwenden const wann immer Sie eine Variable nicht neu zuweisen werden

    – Bestimmte Leistung

    5. August 2018 um 0:05 Uhr

Benutzer-Avatar
Emäus

Es ist ziemlich kurz mit Array-Destrukturierung und String-Vorlagen:

const n = 12345678;
const digits = [...`${n}`];
console.log(digits);

1098790cookie-checkWie trenne ich eine ganze Zahl in einem Array in JavaScript in einzelne Ziffern?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy