Rumah  >  Artikel  >  hujung hadapan web  >  Ringkasan pelbagai kaedah untuk menilai integer dalam kemahiran JavaScript_javascript

Ringkasan pelbagai kaedah untuk menilai integer dalam kemahiran JavaScript_javascript

WBOY
WBOYasal
2016-05-16 16:32:101360semak imbas

Kami sebelum ini telah merekodkan pelbagai cara untuk menentukan jenis angka dalam JavaScript Artikel ini akan melihat cara untuk menentukan jenis integer (Integer).

JavaScript tidak membezakan antara integer dan nombor titik terapung Semua nombor diwakili secara dalaman 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 selebihnya untuk menentukan

Sebarang integer boleh dibahagi dengan 1, iaitu bakinya ialah 0. Gunakan peraturan ini untuk menentukan sama ada ia adalah integer.

Salin kod Kod adalah seperti berikut:

fungsi ialahInteger(obj) {
Kembalikan obj%1 === 0
}
isInteger(3) // benar
isInteger(3.3) // false 

Output di atas menunjukkan bahawa fungsi ini sangat mudah digunakan, tetapi ia tidak berkuasa untuk rentetan dan beberapa nilai istimewa

Salin kod Kod adalah seperti berikut:

isInteger('') // benar
isInteger('3') // benar
isInteger(true) // true
isInteger([]) // benar

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

Salin kod Kod adalah seperti berikut:

fungsi ialahInteger(obj) {
Kembalikan jenis obj === 'nombor' && obj%1 === 0
}
isInteger('') // palsu
isInteger('3') // false
isInteger(true) // false
isInteger([]) // false

Nah, ini lebih sempurna.

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

Salin kod Kod adalah seperti berikut:

fungsi ialahInteger(obj) {
Kembalikan Math.floor(obj) === obj
}
isInteger(3) // benar
isInteger(3.3) // false
isInteger('') // palsu
isInteger('3') // false
isInteger(true) // false
isInteger([]) // false

Ini secara langsung menyekat rentetan, benar dan [], dan jumlah kod adalah kurang daripada fungsi sebelumnya.

3. Hakim mengikut parseInt

Salin kod Kod adalah seperti berikut:

fungsi ialahInteger(obj) {
Kembalikan parseInt(obj, 10) === obj
}
isInteger(3) // benar
isInteger(3.3) // false
isInteger('') // palsu
isInteger('3') // false
isInteger(true) // false
isInteger([]) // false

Sangat bagus, tetapi ada kelemahan
Salin kod Kod adalah seperti berikut:

isInteger(1000000000000000000000) // palsu

Ia sebenarnya mengembalikan 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.

4. Penghakiman melalui operasi bit

Salin kod Kod adalah seperti berikut:

fungsi ialahInteger(obj) {
Kembali (obj | 0) === obj
}
isInteger(3) // benar
isInteger(3.3) // false
isInteger('') // palsu
isInteger('3') // false
isInteger(true) // false
isInteger([]) // false

Fungsi ini sangat baik 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

Salin kod Kod adalah seperti berikut:

isInteger(Math.pow(2, 32)) // Nombor dengan lebih daripada 32 digit mengembalikan palsu

Sudah tentu, kebanyakan masa kita tidak akan menggunakan nombor yang besar.

5. ES6 menyediakan Number.isInteger

Salin kod Kod adalah seperti berikut:

Number.isInteger(3) // benar
Number.isInteger(3.1) // palsu
Number.isInteger('') // palsu
Number.isInteger('3') // palsu
Number.isInteger(true) // false
Number.isInteger([]) // palsu

Pada masa ini, Firefox dan Chrome terkini sudah pun menyokongnya.

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn