문자열과 숫자 혼합 데이터 유형을 포함하는 배열이 있습니다. 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 ]