Bagaimana cara menggabungkan dua angka dalam javascript?

107

Saya ingin sesuatu yang ingin saya 5 + 6kembalikan, "56"bukan 11.

Heidi
sumber
3
Nah, Anda pasti mendapat banyak jawaban. Saya memilih semua yang benar.
David
beberapa jawaban memiliki string kosong di tengahnya. Tampaknya aneh dan saya bertanya-tanya mengapa itu lebih disukai oleh siapa pun. Memiliki tanda kutip di awal menunjukkan dengan cepat maksud, dan tampaknya lebih masuk akal karena tidak memerlukan pemikiran tambahan dalam kasus harus menggabungkan lebih dari dua angka. Saya kira para pemilih setuju, tetapi hanya bertanya-tanya apakah ada alasan historis atau alasan lain di balik alasan di tengah.
MrBoJangles

Jawaban:

152

Gunakan "" + 5 + 6untuk memaksanya menjadi string. Ini bekerja dengan variabel numerik juga:

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


sumber
Jadi, anggaplah nilai 5 dan 6 ada dalam dua variabel: var1 = 5; var2 = 6; akankah itu tetap bekerja
Heidi
3
Jawaban ini harus diedit, pasti ini pendekatan yang lebih baik. const numbersAsString = `${5}${6}`;
Pavol Travnik
27
var value = "" + 5 + 6;
alert(value);
jessegavin
sumber
26

Anda sekarang dapat menggunakan literal template ES6 .

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

Atau, jika Anda memiliki variabel:

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

console.log(numbersAsString); // Outputs 56

Secara pribadi saya menemukan sintaks baru jauh lebih jelas, meskipun sedikit lebih bertele-tele.

texta83
sumber
23

gunakan saja:

5 + "" + 6
Brian Schroth
sumber
16

jawaban sederhana:

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

Menggunakan

var value = "" + 5 + 6;

untuk memaksanya menjadi string.

Nadir SOUALEM
sumber
11

Saya tahu ini adalah posting lama dan telah dijawab berkali-kali. Saya juga bertanya-tanya apakah JavaScript memiliki fungsi yang akan melakukan ini. Saya melakukan beberapa pemrograman matematika dan perlu menggabungkan dua angka.

Jadi bagaimana jika saya perlu menggabungkan dua angka 17 dan 29. Tentu saya bisa mengubahnya menjadi string dan menggabungkannya kemudian mengubah string baru kembali menjadi angka. Itu tampaknya bekerja dengan cukup baik dan saya dapat melanjutkan dengan kode saya, tetapi mari kita lihat di sini dan mencoba mencari tahu apa yang sebenarnya terjadi di sini.

Apa yang kita lakukan pada dua angka ini, bagaimana kita mengambil 17 dan 29 dan mengubahnya menjadi seribu tujuh ratus dua puluh sembilan? Nah kita bisa mengalikan 17 dengan 100 lalu menjumlahkan 29. Dan bagaimana dengan 172 dan 293 untuk mendapatkan seratus tujuh puluh dua ribu dua ratus sembilan puluh tiga? Kalikan 172 dengan 1000 dan tambahkan 293. Tapi bagaimana dengan hanya 2 dan 9? Kalikan 2 dengan 10 lalu tambahkan 9 untuk mendapatkan 29.

Jadi semoga sekarang sebuah pola sudah terlihat oleh Anda. Kita dapat membuat rumus matematika untuk melakukan perhitungan ini untuk kita daripada hanya menggunakan string. Untuk menggabungkan dua angka apa pun, a dan b, kita perlu mengambil hasil kali a dan 10 pangkat panjang b lalu menambahkan b.

Jadi bagaimana kita mendapatkan panjang bilangan? Nah, kita bisa mengubah b menjadi string dan mendapatkan properti panjangnya.

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

Tapi pasti ada cara yang lebih baik untuk melakukan ini tanpa pamrih, bukan? Ya ada.

masukkan deskripsi gambar di sini

Untuk dua bilangan apa pun, a dan b, dengan basis B.Kita akan mengalikan a dengan basis B dengan pangkat panjang b (menggunakan basis log b lalu melapisinya untuk mendapatkan bilangan bulat terdekat lalu menambahkan 1 ke dalamnya) lalu tambahkan b.

Jadi sekarang kode kita terlihat seperti ini:

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

Tapi tunggu, bagaimana jika saya ingin melakukan ini di basis 2 atau basis 8? Bagaimana saya bisa melakukan itu? Kita tidak dapat menggunakan rumus kita yang baru saja kita buat dengan basis lain selain basis 10. Objek Matematika JavaScript sudah memiliki fungsi bawaan untuk basis 10 dan 2 (hanya Math.log), tetapi bagaimana kita mendapatkan fungsi log untuk pangkalan lain? Kami membagi log dari b dengan log basis.Math.log(b) / Math.log(base).

Jadi sekarang kita memiliki kode berbasis matematika yang berfungsi penuh untuk menggabungkan dua angka:

    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

Jika Anda tahu bahwa Anda hanya akan mengerjakan matematika basis 10, Anda dapat menambahkan tanda centang untuk basis tidak terdefinisi lalu set basis = 10:

    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

Untuk mempermudah saya, saya menggunakan prototipe untuk menambahkan fungsi ke objek Number:

    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
sumber
8

Anda juga dapat menggunakan toStringfungsi untuk mengubahnya menjadi string dan menggabungkan.

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

Kemungkinan lain bisa jadi ini:

var concat = String(5) + String(6);
Rui Lima
sumber
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
sumber
1

Ini adalah cara mudah untuk melakukan ini

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

Saya mengonversi kembali ke angka seperti ini ..

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

keluaran 1245

- edit -

Maaf,

untuk saya gunakan ini masih tidak berhasil untuk saya setelah pengujian. Saya harus menambahkan kembali nol yang hilang saat itu dihapus pada angka yang lebih kecil dari 10, penggunaan saya adalah untuk membiarkan kode berjalan pada waktu tertentu Mungkin tidak benar tetapi tampaknya berfungsi (sejauh ini).

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;

}

Suara turun bagus terima kasih :)

Saya baru dalam hal ini dan datang ke sini untuk belajar dari kalian penjelasan tentang mengapa lebih baik.

Anyways memperbarui kode saya untuk menunjukkan bagaimana saya memperbaiki masalah saya karena posting ini membantu saya mengetahuinya.

Christopher Lowe
sumber
0

Saya lebih suka concatcara:

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

Anda juga dapat menggunakan larik yang dapat membantu dalam beberapa kasus penggunaan:

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

Anda dapat mengembalikan angka dengan menggunakan trik ini:
tidak disarankan

[a] + b - 0

Contoh:

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

Untuk menambah semua jawaban di atas saya ingin berbagi logika latar belakang:

Plus adalah operator tambahan yang juga digunakan untuk penggabungan string. Saat kita ingin menggabungkan angka. Ini harus menjadi pemahaman bahwa kami ingin menggabungkan string, karena penggabungan angka tidak membuat kasus penggunaan yang valid bagi saya.

Kami dapat mencapainya dengan berbagai cara,

Melalui konversi tipe

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

Ini juga akan bekerja dan melakukan konversi tipe di latar belakang,

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

Jika Anda memutuskan untuk menggabungkan dua string dan jenis keluaran harus int, parseInt () bekerja di sini

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