对 JavaScript 数组进行排序,使 NaN 值始终位于底部。

javascriptweb developmentobject oriented programming更新于 2025/10/2 2:52:17

我们有一个包含字符串和数字混合数据类型的数组,我们必须编写一个排序函数对数组进行排序,使 NaN 值始终位于底部。数组应首先包含所有正常数字,然后是字符串文字,然后是 NaN 数字。

我们知道 NaN 的数据类型是"数字",因此我们不能像 !number && !string 那样检查 NaN。此外,如果我们仅检查元素的重言式和假值,那么空字符串也将满足 NaN 或 undefined 满足的相同条件。

检查 NaN

那么我们如何检查 NaN。 NaN 数字具有一个特殊属性,即 NaN 不等于 NaN,即对于 JS 中的任何其他值,无论它是哪个,value === value 都会产生 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
]

相关文章


有用资源