JS中sort()问题

来源:互联网 发布:office mac破解版 编辑:程序博客网 时间:2024/06/09 23:10

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!解决!

原创粉丝点击