JS中sort()问题

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

猜你喜欢

转载自blog.csdn.net/dandan_18/article/details/78723097