Saya telah merekam banyak cara untuk menilai jenis angka dalam JavaScript. Artikel ini menunjukkan cara menentukan jenis integer (integer).
Dalam JavaScript, bilangan bulat dan bilangan titik mengambang tidak dibedakan. Semua angka diwakili dalam format poin floating 64-bit, sama dengan tipe ganda Java. Tetapi dalam operasi aktual, seperti pengindeksan array dan operasi bit, didasarkan pada bilangan bulat 32-bit.
Metode 1: Gunakan operator yang tersisa untuk menilai
Integer mana pun akan dibagi dengan 1, yaitu, sisanya adalah 0. Gunakan aturan ini untuk menentukan apakah itu bilangan bulat.
Salinan kode adalah sebagai berikut:
fungsi isInteger (obj) {
mengembalikan obj%1 === 0
}
IsInteger (3) // Benar
IsInteger (3.3) // Salah
Output di atas menunjukkan bahwa fungsi ini sangat berguna, tetapi tampaknya tidak kompeten untuk string dan beberapa nilai khusus.
Salinan kode adalah sebagai berikut:
IsInteger ('') // Benar
IsInteger ('3') // Benar
isInteger (true) // true
IsInteger ([]) // Benar
Sangat sulit untuk menerima string kosong itu, nomor tipe string, boolean true, dan array kosong semuanya kembali benar. Jika Anda tertarik dengan detail jenis konversi internal ini, silakan merujuk ke: Nilai palsu aneh di JavaScript
Oleh karena itu, Anda harus terlebih dahulu menentukan apakah objek tersebut adalah angka, seperti menambahkan tipeof
Salinan kode adalah sebagai berikut:
fungsi isInteger (obj) {
Tipe pengembalian obj === Number '&& obj%1 === 0
}
isInteger ('') // false
isInteger ('3') // false
isInteger (true) // false
isInteger ([]) // false
Nah, ini lebih sempurna.
2. Gunakan Math.round, Math.Ceil, dan Math.floor untuk membuat penilaian
Integer masih sama dengan diri Anda sendiri. Gunakan fitur ini untuk menentukan apakah itu bilangan bulat. Contoh matematika. Floor adalah sebagai berikut
Salinan kode adalah sebagai berikut:
fungsi isInteger (obj) {
return math.floor (obj) === OBJ
}
IsInteger (3) // Benar
IsInteger (3.3) // Salah
isInteger ('') // false
isInteger ('3') // false
isInteger (true) // false
isInteger ([]) // false
Ini secara langsung memblokir string, true, [], dan jumlah kode lebih kecil dari fungsi sebelumnya.
3. Penilaian Melalui Parseint
Salinan kode adalah sebagai berikut:
fungsi isInteger (obj) {
Return Parseint (Obj, 10) === OBJ
}
IsInteger (3) // Benar
IsInteger (3.3) // Salah
isInteger ('') // false
isInteger ('3') // false
isInteger (true) // false
isInteger ([]) // false
Sangat bagus, tetapi juga memiliki satu kerugian
Salinan kode adalah sebagai berikut:
IsInteger (10000000000000000000000) // Salah
Itu benar -benar kembali salah, itu tidak masuk akal. Alasannya adalah bahwa Parseint memaksa parameter pertama yang akan diuraikan ke dalam string sebelum mem -parsing bilangan bulat. Metode mengubah angka ini menjadi bilangan bulat bukanlah pilihan yang baik.
4. Penilaian melalui operasi bit
Salinan kode adalah sebagai berikut:
fungsi isInteger (obj) {
return (obj | 0) === OBJ
}
IsInteger (3) // Benar
IsInteger (3.3) // Salah
isInteger ('') // false
isInteger ('3') // false
isInteger (true) // false
isInteger ([]) // false
Fungsi ini sangat bagus dan memiliki efisiensi tinggi. Tapi ada cacat. Seperti disebutkan di atas, operasi bit hanya dapat memproses angka dalam 32 bit, dan mereka tidak berdaya untuk melakukan lebih dari 32 bit, seperti
Salinan kode adalah sebagai berikut:
IsInteger (Math.Pow (2, 32)) // Angka di atas 32 digit telah dikembalikan False
Tentu saja, sebagian besar waktu kami tidak menggunakan sejumlah besar.
5. ES6 menyediakan number.isinteger
Salinan kode adalah sebagai berikut:
Number.isinteger (3) // Benar
Number.isinteger (3.1) // false
Number.isinteger ('') // false
Number.isinteger ('3') // false
Number.isinteger (true) // false
Number.isinteger ([]) // false
Saat ini, Firefox dan Chrome terbaru sudah didukung.