Wie verkettet man zwei Zahlen in Javascript?

Lesezeit: 5 Minuten

Benutzer-Avatar
Heidi

Ich möchte für etwas wie 5 + 6 zurückgeben "56" Anstatt von 11.

  • Nun, Sie haben sicherlich viele Antworten bekommen. Ich wähle alle richtigen aus.

    – David

    12. November 2009 um 17:00 Uhr

  • Einige der Antworten haben die leere Zeichenfolge in der Mitte. Scheint seltsam und ich habe mich gefragt, warum das jemandem vorzuziehen wäre. Die Anführungszeichen am Anfang zeigen schnell die Absichten an und scheinen sinnvoller zu sein, da es kein zusätzliches Nachdenken erfordert, wenn mehr als zwei Zahlen verkettet werden müssen. Ich nehme an, die Wähler stimmen zu, aber ich frage mich nur, ob es einen historischen oder anderen Grund für die In-the-Middle-Begründung gibt.

    – MrBoJangles

    3. Juni 2016 um 17:56 Uhr


Verwenden "" + 5 + 6 um es zu Saiten zu zwingen. Dies funktioniert auch mit numerischen Variablen:

var a = 5;
var b = 6;
console.log("" + a + b);

  • Angenommen, die Werte 5 und 6 befinden sich in zwei Variablen: var1 = 5; var2 = 6; wird es noch funktionieren

    – Heide

    12. November 2009 um 17:03 Uhr

  • Diese Antwort sollte bearbeitet werden, dies ist definitiv ein besserer Ansatz. const numbersAsString = `${5}${6}`;

    – Pavol Travnik

    10. Januar 2019 um 10:48 Uhr


Benutzer-Avatar
texta83

Sie können jetzt Gebrauch machen ES6 Template-Literale.

const numbersAsString = `${5}${6}`;
console.log(numbersAsString); // Outputs 56

Oder, wenn Sie Variablen haben:

const someNumber = 5;
const someOtherNumber = 6;
const numbersAsString = `${someNumber}${someOtherNumber}`;

console.log(numbersAsString); // Outputs 56

Ich persönlich finde die neue Syntax viel klarer, wenn auch etwas ausführlicher.

  • Wie konvertiere ich verkettete Zahlen zurück in einen String?

    – vikramvi

    28. Mai 2021 um 5:13 Uhr

  • Diese und alle const-Methoden funktionieren nur mit ECMA6-fähigen Browsern.

    – andreszs

    5. November 2021 um 21:32 Uhr

  • @andreszs Sie haben einen großen Punkt gemacht. Die wichtigsten Browser veröffentlichten die ES6-Unterstützung schrittweise, const- und Template-Literale waren einige der ersten Dinge, die unterstützt wurden. Sie müssten ziemlich weit zurückgehen, um eine größere Browserversion zu finden, die das oben Genannte nicht unterstützt. Es ist definitiv etwas, das Sie im Hinterkopf behalten sollten, wenn Sie maximale Kompatibilität anstreben, obwohl ich in diesem Fall lieber babel-Plugins vorschlagen würde, als den Code zu verschlechtern. Ich drücke immer auf “const by default”, was bedeutet, dass let (und insbesondere var) nur verwendet werden sollte, wenn es absolut notwendig ist.

    – texta83

    8. November 2021 um 5:53 Uhr


var value = "" + 5 + 6;
alert(value);

benutz einfach:

5 + "" + 6

Benutzer-Avatar
Steven Kapaun

Ich weiß, dass dies ein alter Beitrag ist und schon oft beantwortet wurde. Ich habe mich auch gefragt, ob JavaScript eine Funktion hat, die dies tun würde. Ich habe etwas mathematisches Programmieren gemacht und musste zwei Zahlen verketten.

Also, was wäre, wenn ich zwei Zahlen 17 und 29 kombinieren müsste. Sicher, ich kann sie in Zeichenfolgen umwandeln und sie verketten und dann die neue Zeichenfolge wieder in eine Zahl umwandeln. Das scheint ziemlich gut zu funktionieren und ich kann mit meinem Code fortfahren, aber lasst uns einen Blick hier werfen und versuchen herauszufinden, was hier wirklich passiert.

Was machen wir mit diesen beiden Zahlen, wie nehmen wir 17 und 29 und machen daraus eintausendsiebenhundertneunundzwanzig? Nun, wir können 17 mit 100 multiplizieren und dann 29 addieren. Und wie wäre es mit 172 und 293, um einhundertzweiundsiebzigtausendzweihundertdreiundneunzig zu erhalten? Multiplizieren Sie 172 mit 1000 und addieren Sie 293. Aber was ist mit nur 2 und 9? Multipliziere 2 mit 10 und addiere dann 9, um 29 zu erhalten.

Hoffentlich sollte Ihnen jetzt ein Muster auffallen. Wir können eine mathematische Formel entwickeln, um diese Berechnung für uns durchzuführen, anstatt nur Zeichenfolgen zu verwenden. Um zwei beliebige Zahlen, a und b, zu verketten, müssen wir das Produkt von a und 10 mit der Länge b potenzieren und dann b addieren.

Wie erhalten wir also die Länge der Zahl b? Nun, wir könnten b in einen String umwandeln und die Längeneigenschaft davon erhalten.

    a * Math.pow(10, new String(b).length) + b;

Aber es muss einen besseren Weg geben, dies ohne Saiten zu tun, oder? Ja da ist.

Geben Sie hier die Bildbeschreibung ein

Für zwei beliebige Zahlen, a und b, mit einer beliebigen Basis B. Wir multiplizieren a mit der Basis B hoch der Länge b (unter Verwendung der logarithmischen Basis von b, dann mit dem Boden, um die nächste ganze Zahl zu erhalten, und addieren dann 1 dazu) dann Hinzufügen von b.

Also sieht unser Code jetzt so aus:

    a * Math.pow(10, Math.floor(Math.log10(b)) + 1) + b;

Aber Moment mal, was wäre, wenn ich das in Base 2 oder Base 8 machen wollte? Wie kann ich das machen? Wir können unsere gerade erstellte Formel nicht mit einer anderen Basis als der Basis 10 verwenden. Das JavaScript-Math-Objekt hat bereits integrierte Funktionen für die Basis 10 und 2 (nur Math.log), aber wie erhalten wir Protokollfunktionen für alle andere Basis? Wir dividieren den Logarithmus von b durch den Logarithmus der Basis. Math.log(b) / Math.log(base).

Jetzt haben wir also unseren voll funktionsfähigen mathematischen Code zum Verketten zweier Zahlen:

    function concatenate(a, b, base) {
        return a * Math.pow(base, Math.floor(Math.log(b) / Math.log(base)) + 1) + b;
    }
    var a = 17, var b = 29;
    var concatenatedNumber = concatenate(a, b, 10);
    // concatenatedNumber = 1729

Wenn Sie wüssten, dass Sie nur Basis-10-Mathematik durchführen würden, könnten Sie eine Überprüfung für base is undefined hinzufügen und dann base = 10 setzen:

    function concatenate(a, b, base) {
        if(typeof base == 'undefined') {
            base = 10;
        }
        return a * Math.pow(base, Math.floor(Math.log(b) / Math.log(base)) + 1) + b;
    }

    var a = 17, b = 29;
    var newNumber = concatenate(a, b); // notice I did not use the base argument
    // newNumber = 1729

Um es mir einfacher zu machen, habe ich den Prototyp verwendet, um die Funktion zum Number-Objekt hinzuzufügen:

    Number.prototype.concatenate = function(b, base) {
        if(typeof base == 'undefined') {
                base = 10;
        }
        return this * Math.pow(base, Math.floor(Math.log(b) / Math.log(base)) + 1) + b;
    };
    var a = 17;
    var newNumber = a.concatenate(29);
    // newNumber = 1729

Benutzer-Avatar
Bryan McLemore

einfache Antwort:

5 + '' + 6;

Benutzer-Avatar
ACBurk

var output = 5 + '' + 6;

1256980cookie-checkWie verkettet man zwei Zahlen in Javascript?

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

Privacy policy