Wie verkette ich zwei Zahlen in Javascript?

107

Ich möchte für etwas wie 5 + 6zurückkehren "56"statt 11.

Heidi
quelle
3
Nun, Sie haben sicherlich viele Antworten bekommen. Ich stimme alle richtigen ab.
David
Einige der Antworten haben die leere Zeichenfolge in der Mitte. Scheint komisch und ich habe mich gefragt, warum das jemandem vorzuziehen ist. Die Anführungszeichen am Anfang weisen schnell auf die Absichten hin und scheinen sinnvoller zu sein, da keine zusätzlichen Überlegungen erforderlich sind, wenn mehr als zwei Zahlen verkettet werden müssen. Ich nehme an, die Wähler sind sich einig, fragen sich aber nur, ob es einen historischen oder anderen Grund für die in der Mitte liegende Begründung gibt.
MrBoJangles

Antworten:

152

Verwenden Sie "" + 5 + 6diese Option, um Zeichenfolgen zu erzwingen. Dies funktioniert auch mit numerischen Variablen:

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


quelle
Ok, wenn man die Werte 5 und 6 annimmt, gibt es zwei Variablen: var1 = 5; var2 = 6; wird es noch funktionieren
Heidi
3
Diese Antwort sollte bearbeitet werden, definitiv ist dies ein besserer Ansatz. const numbersAsString = `${5}${6}`;
Pavol Travnik
27
var value = "" + 5 + 6;
alert(value);
Jessegavin
quelle
26

Sie können jetzt ES6- Vorlagenliterale verwenden.

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

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

texta83
quelle
23

benutz einfach:

5 + "" + 6
Brian Schroth
quelle
16

einfache Antwort:

5 + '' + 6;
Bryan McLemore
quelle
15
var output = 5 + '' + 6;
ACBurk
quelle
14

Verwenden

var value = "" + 5 + 6;

um es zu Saiten zu zwingen.

Nadir SOUALEM
quelle
10

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 programmierte Mathe und musste zwei Zahlen verketten.

Was wäre, wenn ich zwei Zahlen 17 und 29 kombinieren müsste? Sicher kann ich sie in Zeichenfolgen umwandeln und verketten und dann die neue Zeichenfolge wieder in eine Zahl umwandeln. Das scheint ziemlich gut zu funktionieren und ich kann mit meinem Code weitermachen, aber schauen wir uns das hier an und versuchen herauszufinden, was hier wirklich passiert.

Was machen wir mit diesen beiden Zahlen, wie nehmen wir 17 und 29 und verwandeln sie in 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? Multiplizieren Sie 2 mit 10 und addieren Sie 9, um 29 zu erhalten.

Hoffentlich sollte Ihnen jetzt ein Muster klar sein. 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 zur Potenz der Länge b nehmen und dann b addieren.

Wie bekommen wir also die Länge von Nummer b? Nun, wir könnten b in einen String verwandeln und die Länge-Eigenschaft davon erhalten.

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

Aber es muss einen besseren Weg geben, dies ohne Schnüre 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 mit der Potenz der Länge b (verwenden Sie die logarithmische Basis von b und legen Sie sie auf den Boden, um die nächste ganze Zahl zu erhalten, und addieren Sie dann 1 dazu). dann Hinzufügen von b.

So sieht unser Code jetzt aus:

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

Aber warte, was wäre, wenn ich dies in Basis 2 oder Basis 8 tun wollte? Wie kann ich das machen? Wir können unsere Formel, die wir gerade erstellt haben, nicht mit einer anderen Basis als Basis 10 verwenden. Das JavaScript Math-Objekt verfügt bereits über integrierte Funktionen für Basis 10 und 2 (nur Math.log), aber wie erhalten wir Protokollfunktionen für eine beliebige andere Basis? Wir teilen das Protokoll von b durch das Protokoll der Basis.Math.log(b) / Math.log(base).

Jetzt haben wir unseren voll funktionsfähigen mathematischen Code zum Verketten von zwei 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 Prüfung hinzufügen, ob die Basis undefiniert ist, und dann Basis = 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
Steven Kapaun
quelle
8

Sie können die toStringFunktion auch verwenden , um sie in Zeichenfolgen zu konvertieren und zu verketten.

var a = 5;
var b = 6;
var value = a.toString() + b.toString();
Pradeep Kumar Prabaharan
quelle
4

Eine andere Möglichkeit könnte folgende sein:

var concat = String(5) + String(6);
Rui Lima
quelle
2
enter code here
var a = 9821099923;
var b = 91;
alert ("" + b + a); 
// after concating , result is 919821099923 but its is now converted 
into string  

console.log(Number.isInteger("" + b + a))  // false

 you have to do something like below:- 

var c= parseInt("" + b + a)
console.log(c); // 919821099923
console.log(Number.isInteger(c)) // true
Shashwat Gupta
quelle
1

Dies ist der einfache Weg, dies zu tun

var value=5+""+6;
Gihan Chathuranga
quelle
1

Ich habe wieder auf diese Nummer umgestellt.

const timeNow = '' + 12 + 45;
const openTime = parseInt(timeNow, 10);

Ausgabe 1245

- bearbeiten -

Es tut uns leid,

Für meinen Gebrauch funktionierte dies nach dem Testen immer noch nicht für mich. Ich musste die fehlende Null wieder hinzufügen, da sie bei Zahlen kleiner als 10 entfernt wurde. Ich verwende sie, um Code zu bestimmten Zeiten ausführen zu lassen. Möglicherweise nicht korrekt, aber es scheint (bisher) zu funktionieren.

h = new Date().getHours();
m = new Date().getMinutes();
isOpen: boolean;

timeNow = (this.m < 10) ? '' + this.h + 0 + this.m : '' + this.h + this.m;

openTime = parseInt(this.timeNow);


closed() {

(this.openTime >= 1450 && this.openTime <= 1830) ? this.isOpen = true : 
this.isOpen = false;
(this.openTime >= 715 && this.openTime <= 915) ? this.isOpen = true : 
this.isOpen = false;

}}

Die Abstimmung war schön, danke :)

Ich bin neu in diesem Bereich und komme hierher, um von euch eine Erklärung zu lernen, warum es nett gewesen wäre.

Wie auch immer, mein Code wurde aktualisiert, um zu zeigen, wie ich mein Problem behoben habe, da dieser Beitrag mir geholfen hat, es herauszufinden.

Christopher Lowe
quelle
0

Ich würde den concatWeg bevorzugen :

const numVar1 = 5;
const numVar2 = 6;
const value = "".concat(numVar1, numVar2);
// or directly with values
const value2 = "".concat(5, 6);

Sie können auch ein Array verwenden, das in einigen Anwendungsfällen hilfreich sein kann:

const value3 = [5, 6, numVar1].join('');
dun32
quelle
0

Mit diesem Trick können Sie eine Nummer zurückgeben :
nicht empfohlen

[a] + b - 0

Beispiel:

let output = [5] + 6 - 0;
console.log(output); // 56
console.log(typeof output); // number
Haikel
quelle
0

Um zu allen obigen Antworten hinzuzufügen, möchte ich die Hintergrundlogik teilen:

Plus ist ein Additionsoperator, der auch zur Verkettung von Zeichenfolgen verwendet wird. Wenn wir Zahlen verketten wollen. Es sollte das Verständnis sein, dass wir die Zeichenfolgen verketten möchten, da die Verkettung von Zahlen für mich keine gültigen Anwendungsfälle darstellt.

Wir können es auf verschiedene Arten erreichen,

Durch Typkonvertierung

let a = 5;
a.toString()+5 // Output 55 type "string"

Dies funktioniert auch und führt die Typkonvertierung im Hintergrund durch.

5 +""+ 5 // Output 55 type "string"

Wenn Sie zwei Zeichenfolgen verketten möchten und der Ausgabetyp int sein sollte, funktioniert parseInt () hier

parseInt(5 +""+ 5)  //Output 55 Type "number"
Amitesh Bharti
quelle