JavaScript中的sort()方法用于对数组的元素进行排序。其中有许多误区一定要注意,不然就会带来意想不到的结果。

下面就举几个具体事例来说明:
造成第二第结果的原因是,因为sort()方法是根据字符串的ASCII码进行排序,所谓的ASCII码也就是我们常说的unicode编码。
而同一个英文字母,大写与小写是有区别的,小写字母的ASCII码是排在大写字母的后边,所以得到这种结果也就见怪不怪了。
这里就是把arr中所有元素的大小写做了统一处理,要么都是大写,要么都是小写,这样就能避免大小写unicode码不同带来的困扰。
造成第三种结果的原因是,因为sort()方法在处理数组时,其实是对数组中的所有元素做了隐式转换。
而Number类型的数字都被转换成了String类型的字符串,在unicode码比较大小时,是从前到后且逐位进行比较(先是比较数组中所有元素的第一位,接着是第二位,第三位...)。
自然而然,就得到[1, 10, 2, 22, 8]这样的结果。
当然你也可以倒序排列:
关于参数a和b:
W3C也有相关说明,以供参考。
谢谢
O(∩_∩)O
欢迎访问:个人博客地址