Bunun yerine 5 + 6geri dönmek gibi bir şey istiyorum ."56"11
Bunun yerine 5 + 6geri dönmek gibi bir şey istiyorum ."56"11
Yanıtlar:
Kullanım "" + 5 + 6dizeleri zorlamak. Bu, sayısal değişkenlerle de çalışır:
var a = 5;
var b = 6;
console.log("" + a + b);
const numbersAsString = `${5}${6}`;
var value = "" + 5 + 6;
alert(value);
Artık ES6 şablon değişmezlerinden yararlanabilirsiniz.
const numbersAsString = `${5}${6}`;
console.log(numbersAsString); // Outputs 56
Veya değişkenleriniz varsa:
const someNumber = 5;
const someOtherNumber = 6;
const numbersAsString = `${someNumber}${someOtherNumber}`;
console.log(numbersAsString); // Outputs 56
Şahsen ben yeni sözdizimini biraz daha ayrıntılı olsa da çok daha net buluyorum.
sadece kullan:
5 + "" + 6
basit cevap:
5 + '' + 6;
Kullanım
var value = "" + 5 + 6;
dizeleri zorlamak için.
Bunun eski bir gönderi olduğunu ve birçok kez yanıtlandığını biliyorum. Ben de JavaScript'in bunu yapacak bir işlevi olup olmadığını merak ediyordum. Biraz matematiksel programlama yapıyordum ve iki sayıyı birleştirmem gerekiyordu.
Peki ya 17 ve 29 numaralı iki sayıyı birleştirmem gerekirse. Elbette onları dizelere dönüştürebilir ve birleştirebilirim, sonra yeni dizgiyi tekrar sayıya dönüştürebilirim. Bu oldukça iyi çalışıyor gibi görünüyor ve koduma devam edebilirim, ancak buraya bir göz atalım ve burada gerçekte ne olduğunu anlamaya çalışalım.
Bu iki sayıya ne yapıyoruz, 17 ve 29'u nasıl alıp bin yedi yüz yirmi dokuza çevireceğiz? 17 ile 100'ü çarpıp 29'u toplayabiliriz. Peki ya 172 ve 293, yüz yetmiş iki bin iki yüz doksan üç elde eder? 172'yi 1000 ile çarpın ve 293 ekleyin. Peki ya sadece 2 ve 9? 2'yi 10 ile çarpın ve ardından 29'u elde etmek için 9 ekleyin.
Öyleyse umarım şimdiye kadar sizin için bir model görünür olmalıdır. Bu hesaplamayı bizim için sadece dizeleri kullanmak yerine yapmak için bir matematik formülü tasarlayabiliriz. Herhangi iki sayıyı, a ve b'yi birleştirmek için, a ve 10'un çarpımını b uzunluğunun kuvvetine almalı ve sonra b'yi eklemeliyiz.
Peki b sayısının uzunluğunu nasıl elde ederiz? B'yi bir dizgeye çevirip uzunluk özelliğini alabiliriz.
a * Math.pow(10, new String(b).length) + b;
Ama bunu dizeler olmadan yapmanın daha iyi bir yolu olmalı, değil mi? Evet var.
Herhangi iki sayı için, a ve b, herhangi bir B tabanıyla. A'yı B tabanıyla B uzunluğunun kuvvetiyle çarpacağız (b'nin log tabanını kullanarak ve sonra en yakın tam sayıyı elde etmek için onu döşeyip 1 ekleyerek) sonra ekleyerek b.
Şimdi kodumuz şöyle görünüyor:
a * Math.pow(10, Math.floor(Math.log10(b)) + 1) + b;
Ama bekleyin, ya bunu 2. tabanda veya 8. tabanda yapmak istersem? Bunu nasıl yapabilirim? Az önce oluşturduğumuz formülümüzü 10 tabanlı dışında başka herhangi bir temel ile kullanamayız. JavaScript Math nesnesi, 10 ve 2 tabanı (sadece Math.log) için zaten yerleşik işlevlere sahiptir, ancak herhangi biri için günlük işlevlerini nasıl elde ederiz? diğer üs? B'nin günlüğünü taban günlüğüne böleriz.Math.log(b) / Math.log(base).
Şimdi, iki sayıyı birleştirmek için tamamen işleyen matematik tabanlı kodumuz var:
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
Eğer sadece 10 tabanlı matematik yapacağınızı biliyorsanız, base undefined için bir kontrol ekleyebilir ve ardından base = 10 ayarlayabilirdiniz:
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
İşimi kolaylaştırmak için prototipi işlevi Number nesnesine eklemek için kullandım:
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
toStringİşlevi dizeye dönüştürmek ve birleştirmek için de kullanabilirsiniz .
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
Bunu yapmanın kolay yolu bu
var value=5+""+6;
Bu şekilde tekrar sayıya çevirdim ..
const timeNow = '' + 12 + 45;
const openTime = parseInt(timeNow, 10);
çıktı 1245
-- Düzenle --
afedersiniz,
kullanımım için bu testten sonra hala benim için çalışmadı. Eksik sıfırı 10'dan küçük sayılarda kaldırıldığı için tekrar eklemek zorunda kaldım, kullanımım kodun belirli zamanlarda çalışmasına izin vermek için doğru olmayabilir, ancak işe yarıyor gibi görünüyor (şimdiye kadar).
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;
}
Aşağı oy güzeldi teşekkür ederim :)
Bu işte yeniyim ve buraya sizden neden güzel olacağına dair bir açıklama öğrenmek için geldim.
Her neyse, bu gönderi anlamama yardımcı olduğu için sorunumu nasıl çözdüğümü göstermek için kodumu güncelledi.
Şu concatyolu tercih ederim :
const numVar1 = 5;
const numVar2 = 6;
const value = "".concat(numVar1, numVar2);
// or directly with values
const value2 = "".concat(5, 6);
Ayrıca bazı kullanım durumlarında yardımcı olabilecek bir dizi de kullanabilirsiniz:
const value3 = [5, 6, numVar1].join('');
Yukarıdaki tüm cevaplara eklemek için arka plan mantığını paylaşmak istiyorum:
Plus , dizelerin birleştirilmesi için de kullanılan bir toplama operatörüdür. Numaraları birleştirmek istediğimizde. Sayıların birleştirilmesi benim için geçerli kullanım durumları oluşturmadığından, dizeleri birleştirmek istediğimiz anlayış olmalıdır.
Bunu birden çok yolla başarabiliriz,
Tip dönüşümü sayesinde
let a = 5;
a.toString()+5 // Output 55 type "string"
Bu aynı zamanda arka planda çalışacak ve tür dönüştürme yapacak
5 +""+ 5 // Output 55 type "string"
İki dizeyi birleştirmeye kararlıysanız ve çıktı türünün int olması gerekiyorsa, parseInt () burada çalışır
parseInt(5 +""+ 5) //Output 55 Type "number"