前言
写程序难免会遇到需要排序的时候. 但看似简单的排序, 其实暗藏杀机. 一不小心就会搞出 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