js array sort
如何把数组按照从小到大或从大到小的方式排序?
JavaScript中内置对象——数组本身拥有排序方法:array.sort()
关于这个方法很多人都有误区,我也不例外。
在某些数组下这个方法会按照从小到大的方式排序
var arr=[1,3,4,2,5,7,9,8,6]; |
why?问题出在哪里?为什么换个数组这个方法就不行了。
如果我们查阅JavaScript核心API的话会发现,
array.sort()默认是按照字符编码的顺序来对数组中的元素进行排序的。
如果我们的数组中元素不是字符串的话,
它会默认将把数组的元素都转换成字符串,然后进行比较。
现在我们手动把111转化成“111”,22转化成“22”,然后比较就会发现”22”>”111”。
alert("22">"111") // true |
好了,问题的症结已经被我们发现了。
回到标题,如何让数组按照我们希望的方式来排序呢?
array.sort()为我们提供强大的参数:orderfunc。
解决方法:array.sort(orderfunc)
function orderfunc(a,b){ |
如何我们需要从大到小的顺序排序的话,把b放在a前面即可。
function orderfunc(a,b){ |
总结:字符串比较与数值比较截然不同。