前言
寫程序難免會遇到需要排序的時候. 但看似簡單的排序, 其實暗藏殺機. 一不小心就會搞出 Bug 哦.
這篇就簡單聊聊 JS 的排序.
直覺與特殊場景
說到排序. 一般人熟悉的情況是這些
直觀的
英文字 a 到 z 順序
中文字 阿, 八, 差, 依據漢語拼音的英文字母順序
數字 -1 < 0 < 1 negative < zero < positive 小到大
日期 01-01-2023, 02-01-2023, 03-01-2023 過去到未來
都很直觀, 但是證實情況卻往往會有許多奇葩出現. 比如
特殊的
a 和 A 字母大小寫的區別. 先 a 還是先 A?
如果出現 null or undefined or empty string 呢? null 是排前面還是後面?
不同類型對比是怎樣呢? 100 > 'abc' ?
符號對比? '~' > '@' 是大過還是小過?
>< 大過小過
排序自然就是先比大小咯. 所以先看看在 JS 是怎樣對比 2 個值的大小.
常識
string comparison