對 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.