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


我们有一个包含字符串和数字混合数据类型的数组,我们需要编写一个排序函数,对数组进行排序,以便 NaN 值始终位于底部。数组应首先包含所有普通数字,然后是字符串文字,最后是 NaN 数字。

我们知道 NaN 的数据类型是“number”,因此我们不能像 !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
]

更新于: 2020-08-21

499 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.