最近做一道算法题,感觉写的算法没错啊,可结果就是不对。
调试很久之后发现,竟然是 sort()
方法出了问题!
示例如下:
a = [1, 2, 3, 10]
a.sort() // a = [1, 10, 2, 3]
惊呆了!一时间以为我排序的是字符串而不是数字。可我用的明明是数字呀!
然后又读了一般 MDN 上的相关文档:Array.prototype.sort(),发现人家还真就是这么定义的!默认会把数字先转换成字符串再排序!
我晕!!这是谁设计的??
如果想要正常按大小排序,需要这样:
a = [1, 10, 2, 3]
a.sort((a, b) => (a - b)) // a = [1, 2, 3, 10]
真是不知道说什么好了。。