Rumah > Artikel > hujung hadapan web > Lima cara js untuk menentukan sama ada ia adalah kemahiran javascript type_integer
Artikel ini melihat cara menentukan jenis integer (Integer JavaScript tidak membezakan antara integer dan nombor titik terapung Semua nombor secara dalaman diwakili dalam format titik terapung 64-bit, yang sama dengan jenis berganda Java. Walau bagaimanapun, operasi sebenar seperti pengindeksan tatasusunan dan operasi bit adalah berdasarkan integer 32-bit.
Kaedah 1, gunakan operator baki untuk menentukan
Sebarang integer boleh dibahagi dengan 1, iaitu bakinya ialah 0. Gunakan peraturan ini untuk menentukan sama ada ia adalah integer.
function isInteger(obj) { return obj%1 === 0 } isInteger(3) // true isInteger(3.3) // false
Output di atas menunjukkan bahawa fungsi ini sangat mudah digunakan, tetapi ia tidak berkuasa untuk rentetan dan beberapa nilai istimewa
isInteger('') // true isInteger('3') // true isInteger(true) // true isInteger([]) // true
True dikembalikan untuk rentetan kosong, nombor jenis rentetan, Boolean true dan tatasusunan kosong, yang sememangnya tidak boleh diterima. Jika anda berminat dengan butiran penukaran dalaman jenis ini, sila rujuk: Nilai palsu yang pelik dalam JavaScript
Oleh itu, anda perlu terlebih dahulu menentukan sama ada objek itu ialah nombor, seperti menambah jenis
function isInteger(obj) { return typeof obj === 'number' && obj%1 === 0 } isInteger('') // false isInteger('3') // false isInteger(true) // false isInteger([]) // false
Nah, ini lebih sempurna.
Kaedah 2, gunakan Math.round, Math.ceil, Math.floor untuk menilai
Integer masih sama dengan dirinya selepas dibundarkan. Gunakan ciri ini untuk menentukan sama ada ia adalah integer, contoh Math.floor, seperti berikut
function isInteger(obj) { return Math.floor(obj) === obj } isInteger(3) // true isInteger(3.3) // false isInteger('') // false isInteger('3') // false isInteger(true) // false isInteger([]) // false
Ini menyekat terus rentetan, benar dan [], dan jumlah kod adalah kurang daripada fungsi sebelumnya.
Kaedah 3, hakim mengikut parseInt
function isInteger(obj) { return parseInt(obj, 10) === obj } isInteger(3) // true isInteger(3.3) // false isInteger('') // false isInteger('3') // false isInteger(true) // false isInteger([]) // false
Sangat bagus, tetapi ada kelemahan
isInteger(1000000000000000000000) // false
Ia sebenarnya dikembalikan palsu, yang tidak munasabah. Sebabnya ialah parseInt memaksa hujah pertama dihuraikan ke dalam rentetan sebelum menghuraikan integer. Kaedah menukar nombor kepada integer ini bukanlah pilihan yang baik.
Kaedah 4: Tentukan melalui operasi bit
function isInteger(obj) { return (obj | 0) === obj } isInteger(3) // true isInteger(3.3) // false isInteger('') // false isInteger('3') // false isInteger(true) // false isInteger([]) // false
Fungsi ini sangat bagus dan sangat cekap. Tetapi terdapat kecacatan Seperti yang dinyatakan di atas, operasi bit hanya boleh mengendalikan nombor dalam 32 bit, dan tidak boleh melakukan apa-apa dengan nombor melebihi 32 bit, seperti
Number.isInteger(3) // true Number.isInteger(3.1) // false Number.isInteger('') // false Number.isInteger('3') // false Number.isInteger(true) // false Number.isInteger([]) // false
Pada masa ini, Firefox dan Chrome terkini sudah pun menyokongnya.
Di atas ialah lima cara untuk menentukan sama ada ia adalah jenis integer Setiap satu daripada lima cara ini mempunyai kelebihan dan kekurangannya sendiri. Anda boleh membandingkannya dengan teliti dan memilih yang terbaik untuk digunakan.