Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

배열 JavaScript에서 NaN 키워드의 존재를 확인하는 방법

<시간/>

참 값과 거짓 값을 모두 포함하는 요소 배열이 있습니다. 우리의 임무는 원래 배열에서 NaN인 요소의 인덱스가 있는 배열을 반환하는 함수를 작성하는 것입니다.

NaN !==NaN

NaN의 데이터 유형은 실제로 숫자입니다. NaN은 거짓 값이지만 다른 데이터 유형이나 변수에는 없는 고유한 속성이 있습니다. NaN ===NaN은 false를 산출한다는 것입니다. 그리고 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() 함수는 제공된 값이 NaN인지 또는 NaN으로 강제 변환될 수 있는지 여부에 따라 true 또는 false를 반환합니다. Number.isNaN() 함수는 제공된 값이 실제로 NaN인 경우에만 true를 반환합니다.

따라서 Number.isNaN()은 isNaN()보다 NaN을 확인하는 신뢰할 수 있는 방법입니다. 코드 출력의 차이점은 다음과 같습니다.

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()이 더 안정적인 방법입니다.