对 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 ]
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP