對 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