Ich möchte für etwas wie 5 + 6zurückkehren "56"statt 11.
Ich möchte für etwas wie 5 + 6zurückkehren "56"statt 11.
Antworten:
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);
const numbersAsString = `${5}${6}`;
var value = "" + 5 + 6;
alert(value);
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.
benutz einfach:
5 + "" + 6
einfache Antwort:
5 + '' + 6;
Verwenden
var value = "" + 5 + 6;
um es zu Saiten zu zwingen.
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.
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
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();
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
Dies ist der einfache Weg, dies zu tun
var value=5+""+6;
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.
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('');
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"