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

NaN 값이 항상 맨 아래에 오도록 JavaScript 배열을 정렬합니다.

<시간/>

문자열과 숫자 혼합 데이터 유형을 포함하는 배열이 있습니다. NaN 값이 항상 맨 아래에 오도록 배열을 정렬하는 정렬 함수를 작성해야 합니다. 배열에는 모든 일반 숫자가 먼저 포함되어야 하고 그 뒤에 문자열 리터럴이 오고 그 뒤에 NaNnumbers가 와야 합니다.

NaN의 데이터 유형이 "숫자"라는 것을 알고 있으므로 !number &&!string과 같은 NaN을 확인할 수 없습니다. 또한 요소의 동어반복과 거짓을 간단히 확인하면 빈 문자열도 NaN 또는 undefined가 충족하는 것과 동일한 조건을 충족합니다.

NaN 확인

그렇다면 NaN을 확인하는 방법은 무엇입니까? NaN 숫자에는 특별한 속성이 있으며 NaN은 NaN과 같지 않습니다. 즉, JS의 다른 값에 대해 값 ===값은 true를 생성하지만 NaN ===NaN은 항상 false를 생성합니다. 이 사실을 사용하여 배열을 정렬합니다.

예시

const arr = [344, 'fd', NaN, '', 5, 'f',76, NaN, 76, NaN, 87, 89, 'fdf',
23, 'fgg', NaN, 765];
const sorter = (a, b) => {
   if(a !== a){
      return 1;
   }else if(b !== b){
      return -1;
   }
   return typeof a === 'number' ? -1 : 1;
};
arr.sort(sorter);
console.log(arr);

출력

콘솔의 출력은 -

[
   765, 23, 89, 87,
   76, 76, 5, 344,
   'fd', '', 'f', 'fdf',
   'fgg', NaN, NaN, NaN,
   NaN
]