Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

วิธีตรวจสอบการมีอยู่ของคีย์เวิร์ด NaN ในอาร์เรย์ JavaScript


เรามีอาร์เรย์ขององค์ประกอบที่มีทั้งค่าความจริงและค่าเท็จ งานของเราคือการเขียนฟังก์ชันที่ส่งคืนอาร์เรย์ที่มีดัชนีขององค์ประกอบเหล่านั้นซึ่งเป็น NaN ในอาร์เรย์ดั้งเดิม

น่าน !==น่าน

ประเภทข้อมูลของ NaN เป็นตัวเลขจริงๆ แม้ว่า NaN จะเป็นค่าเท็จ แต่ก็มีคุณสมบัติเฉพาะที่ไม่มีประเภทข้อมูลหรือตัวแปรอื่นมี นั่นคือนิพจน์ NaN ===NaN ให้ผลตอบแทนเท็จ และในกรณีของ NaN เท่านั้นที่เป็นเท็จ

ดังนั้นเราจึงสามารถใช้พฤติกรรมนี้เพื่อประโยชน์ของเราและเลือกดัชนีค่า NaN รหัสสำหรับสิ่งนี้จะเป็น -

const arr = [7, 1, "123abc", undefined, NaN, 78, NaN, null, "aes", NaN,
'', null, NaN];
const pickNaN = (arr) => {
   return arr.reduce((acc, val, ind) => {
      if(val !== val){
         acc.push(ind);
      };
      return acc;
   }, []);
};
console.log(pickNaN(arr));

การใช้ isNaN() / Number.isNaN()

ฟังก์ชัน isNaN() ส่งคืนค่าจริงหรือเท็จโดยพิจารณาจากข้อเท็จจริงว่าค่าที่ให้ isa NaN หรือสามารถบังคับเป็น NaN ได้หรือไม่ ในขณะที่ฟังก์ชัน Number.isNaN() จะคืนค่าเป็น จริง หากค่าที่ระบุเป็น NaN จริงเท่านั้น

ดังนั้น Number.isNaN() จึงเป็นวิธีที่น่าเชื่อถือในการตรวจสอบ NaN ผ่าน isNaN() ความแตกต่างในผลลัพธ์ของโค้ดแสดงไว้ด้านล่าง

ตัวอย่าง

const arr = [7, 1, "abc", undefined, NaN, 78, NaN, null, "aes", NaN, '',
null, NaN];
const pickNaN = (arr) => {
   return arr.reduce((acc, val, ind) => {
      if(Number.isNaN(val)){
         acc.reliableWay.push(ind);
      };
      if(isNaN(val)){
         acc.unreliableWay.push(ind);
      }
      return acc;
   }, {
      reliableWay: [],
      unreliableWay: []
   });
};
console.log(pickNaN(arr));

รหัสนี้เตรียมสองอาร์เรย์ หนึ่งใช้ Number.isNaN() และอีกอันใช้ isNaN()

ผลลัพธ์

ผลลัพธ์จะเป็น −

{
   reliableWay: [ 4, 6, 9, 12 ],
   unreliableWay: [ 2, 3, 4, 6, 8, 9, 12]
}

เราสามารถเห็นได้อย่างชัดเจนว่า isNaN() คำนวณค่าที่ไม่ใช่ NaN จำนวนมากเป็น NaN ได้อย่างไร นั่นเป็นเหตุผลที่Number.isNaN() เป็นวิธีที่น่าเชื่อถือมากขึ้น