لقد سجلت العديد من الطرق للحكم على نوع رقم في JavaScript. توضح هذه المقالة كيفية تحديد نوع عدد صحيح (عدد صحيح).
في JavaScript ، لا يتم تمييز الأعداد الصحيحة وأرقام الفاصلة العائمة. يتم تمثيل جميع الأرقام بتنسيق نقطة عائمة 64 بت ، وهو نفس نوع Java المزدوج. ولكن في العمليات الفعلية ، مثل فهرسة الصفيف وعمليات البتات ، تعتمد على أعداد صحيحة 32 بت.
الطريقة 1: استخدم المشغل المتبقي للحكم
أي عدد صحيح سيكون قابلاً للقسمة على 1 ، أي أن الباقي هو 0. استخدم هذه القاعدة لتحديد ما إذا كان عدد صحيح.
نسخة الكود كما يلي:
وظيفة isInteger (obj) {
إرجاع OBJ ٪ 1 === 0
}
isinteger (3) // صحيح
isinteger (3.3) // false
يوضح الإخراج أعلاه أن هذه الوظيفة مفيدة للغاية ، ولكن يبدو أنها غير كفؤة للسلاسل وبعض القيم الخاصة.
نسخة الكود كما يلي:
isinteger ('') // صحيح
isinteger ('3') // صحيح
isinteger (صواب) // صحيح
isinteger ([]) // صحيح
من الصعب حقًا قبول هذه الأوتار الفارغة ، وأرقام نوع السلسلة ، والصفقة المنطقية ، والصفائف الفارغة جميعها. إذا كنت مهتمًا بتفاصيل هذه الأنواع من التحويل الداخلي ، فيرجى الرجوع إلى: قيم مزيفة غريبة في JavaScript
لذلك ، تحتاج أولاً إلى تحديد ما إذا كان الكائن رقمًا ، مثل إضافة نوع
نسخة الكود كما يلي:
وظيفة isInteger (obj) {
إرجاع typeof obj === 'number' && obj ٪ 1 === 0
}
isinteger ('') // false
isinteger ('3') // false
isinteger (صواب) // خطأ
isinteger ([]) // false
حسنًا ، هذا أكثر كمالا.
2. استخدم Math.round و Math.ceil و Math.Floor لإصدار الأحكام
لا يزال عدد صحيح مساوياً لنفسك. استخدم هذه الميزة لتحديد ما إذا كان عدد صحيح. مثال Math.floor كما يلي
نسخة الكود كما يلي:
وظيفة isInteger (obj) {
إرجاع Math.Floor (OBJ) === OBJ
}
isinteger (3) // صحيح
isinteger (3.3) // false
isinteger ('') // false
isinteger ('3') // false
isinteger (صواب) // خطأ
isinteger ([]) // false
هذا يحظر مباشرة السلسلة ، صواب ، [] ، وكمية الكود أصغر من الوظيفة السابقة.
3. الحكم من خلال Parseint
نسخة الكود كما يلي:
وظيفة isInteger (obj) {
إرجاع Parseint (OBJ ، 10) === OBJ
}
isinteger (3) // صحيح
isinteger (3.3) // false
isinteger ('') // false
isinteger ('3') // false
isinteger (صواب) // خطأ
isinteger ([]) // false
جيد جدا ، ولكن أيضا عيب واحد
نسخة الكود كما يلي:
Isinteger (100000000000000000000) // false
لقد عاد بالفعل خطأ ، كان غير معقول. والسبب هو أن Parseint يجبر المعلمة الأولى التي يتم تحليلها في سلسلة قبل تحليل عدد صحيح. طريقة تحويل الأرقام هذه ليست خيارًا جيدًا.
4. الحكم من خلال عمليات البت
نسخة الكود كما يلي:
وظيفة isInteger (obj) {
العودة (OBJ | 0) === OBJ
}
isinteger (3) // صحيح
isinteger (3.3) // false
isinteger ('') // false
isinteger ('3') // false
isinteger (صواب) // خطأ
isinteger ([]) // false
هذه الوظيفة جيدة جدا ولها كفاءة عالية. ولكن هناك عيب. كما ذكر أعلاه ، لا يمكن لعمليات البتات معالجة الأرقام إلا في غضون 32 بت ، وهي عاجزة عن فعل أي شيء أكثر من 32 بت ، مثل
نسخة الكود كما يلي:
isInteger (Math.Pow (2 ، 32)) // أرقام أعلى من 32 رقمًا قد عادت كاذبة
بالطبع ، في معظم الوقت لا نستخدم هذا العدد الكبير.
5. ES6 يوفر الرقم.
نسخة الكود كما يلي:
Number.isinteger (3) // true
Number.isinteger (3.1) // false
number.isinteger ('') // false
number.isinteger ('3') // false
number.isinteger (صحيح) // خطأ
number.isinteger ([]) // false
حاليًا ، يتم دعم أحدث Firefox و Chrome بالفعل.