对JavaScript数组进行排序,以便NaN值始终在底部结束。
我们有一个包含String和数字混合数据类型的数组,我们必须编写一个对数组进行排序的排序函数,以便NaN值始终在底部结束。数组应包含所有常规数字,然后是字符串文字,然后是NaN数字。
我们知道NaN的数据类型是“数字”,因此我们无法检查NaN,如!number&&!string。此外,如果仅检查元素的重言式和虚假性,则空字符串也将满足NaN或未定义的条件。
检查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 ]