首页 > 代码库 > JavaScript的排序问题

JavaScript的排序问题

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

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

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

 技术分享技术分享

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

如果为 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()函数即可实现正确的排序。

结果如下:

技术分享技术分享


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


本文出自 “你好我是森林” 博客,请务必保留此出处http://chensenlin.blog.51cto.com/10559465/1862152

JavaScript的排序问题