JavaScript的排序问题

根据javascript的手册,将sort()方法进行运算,结果

<script>
    var arr = [2,3,56,12,546,77,98];
    alert(arr.sort());
</script>

l根据javascript的手册,将sort()方法进行运算,结果如下:

 spacer.gifwKioL1gBuWnA2DZMAAAUYBtebl4779.png-wh_50

可以看到这并不是我们需要的排序,于是根据手册的提示:

如果为 sortfunction 参数提供了一个函数,那么该函数必须返回下列值之一:

  • 负值,如果所传递的第一个参数比第二个参数小。

  • 零,如果两个参数相等。

  • 正值,如果第一个参数比第二个参数大。


于是我封装一个函数demosort()

<script>
    var arr = [2,3,56,12,546,77,98];
    arr.sort(function demosort(x, y){
        if (x< y) {
            return -1;              //小于,返回-1     
        } else if (x > y) {
            return 1;                    //大于返回1
        } else {                    //其他,返回 0
            return 0;
        }
    });
    alert(arr);
</script>

这样的话,再次通过sort()函数即可实现正确的排序。

结果如下:

spacer.gifwKiom1gBuYqD7wPqAAAcWEQp-rI739.png-wh_50


这样就实现了真正意义上的排序。至于逆序可以将返回值相反,或者直接使用 reverse()函数。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章