array.sort(sortby) sortby可选,但必须为函数。
.sort()默认按字符编码的顺序进行排序。具体见一下代码:
例1:
<script>
var arr = [23,12,1,34,116,8,18,37,56,50];
alert(arr.sort());
</script>
输出:
[1, 116, 12, 18, 23, 34, 37, 50, 56, 8]
例2:
<script>
var arr = ['fanda','banner','find','zoom','index','width','javascript'];
console.log(arr.sort());
</script>
输出:
["banner", "fanda", "find", "index", "javascript", "width", "zoom"]
可以看到字符串排序是没有问题的,但是数字大小排序问题就暴露了。
为了实现效果要写一个函数做为参数传入:
若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
若 a 等于 b,则返回 0。
若 a 大于 b,则返回一个大于 0 的值
<script>
var arr = [23,12,1,34,116,8,18,37,56,50];
function sequence(a,b){
return a - b;
}
console.log(arr.sort(sequence));
</script>
输出:
[1, 8, 12, 18, 23, 34, 37, 50, 56, 116]
bingo!解决!