先安利一个OJ
网站CodeWars,上面的题都是用户出的,所以题库无限大,升段系统也挺有意思的,我的主页Hoofoo。
Array.prototype.sort()
函数是JavaScript
编程最常用的函数之一,最近在codewars练算法时偶然发现执行sort()
时负数的排序顺序没有按照预想的运行。1
2[5,4,3,2,1,0,-1,-2].sort()
// =>[ -1, -2, 0, 1, 2, 3, 4, 5 ]
然后在MDN查看发现sort()
函数默认是按字典序排序的,MDN是如下描述的:
sort()
方法在适当的位置对数组的元素进行排序,并返回数组。 sort 排序不一定是稳定的。默认排序顺序是根据字符串Unicode码点。
所以排序还是要老老实实的用回调函数:1
2
3
4[5,4,3,2,1,0,-1,-2].sort((a, b) => a - b)
// =>[ -2, -1, 0, 1, 2, 3, 4, 5 ]
[5,4,3,2,1,0,-1,-2].sort((a, b) => b - a)
// =>[ 5, 4, 3, 2, 1, 0, -1, -2 ]
可能很多函数都像sort()
一样不会像我们想象的那样运行,多看书看文档,巩固好基础,才能写出足够稳固的代码。
本文链接:JavaScript陷阱之sort
版权声明:本文章采用CC BY-NC-SA 3.0 CN许可协议进行许可。转载请注明出处!