网站地图    收藏   

主页 > 前端 > javascript >

js数组排序方法总结

来源:自学PHP网    时间:2023-11-07 16:13 作者: 阅读:

[导读] 本文章介绍了我们常用的利用数组排序算法来介绍js中对数组排序的方法总结,包括有冒泡法排序与sort方法来排序,有需要的朋友可参考。...

冒泡法排序


<script type="text/javascript">
<!--
    function sort2(obj)
    {
        var arr=obj;
        var temp;
        for(var i=0;i<arr.length;i++)
        {
            for(var j=i+1;j<arr.length;j++)
            {
                if(arr[i]<arr[j])
                {
                    temp=arr[i];
                    arr[i]=arr[j];
                    arr[j]=temp;
                }
            }
        }
        return arr;
    }
    alert(sort2([3,2,5,6,10,8,4,1]));
-->
</script>



列2 利用sort方法来排序。


<script type="text/javascript">
<!--
    function sort1(obj)
    {
        var arr=obj;
        arr.sort(function(a,b){return a<b?1:-1});
        return arr;
    }
    alert(sort1([3,2,5,6,10,8,4,1]));
-->
</script>



sort还有一个例子


var arrDemo = new Array();
 arrDemo[0] = 10;
 arrDemo[1] = 50;
 arrDemo[2] = 51;
 arrDemo[3] = 100;
 arrDemo.sort(); //调用sort方法后,数组本身会被改变,即影响原数组
 alert(arrDemo);//10,100,50,51 默认情况下sort方法是按ascii字母顺序排序的,而非我们认为是按数字大小排序
 arrDemo.sort(function(a,b){return a>b?1:-1});//从小到大排序
 alert(arrDemo);//10,50,51,100
 arrDemo.sort(function(a,b){return a<b?1:-1});//从大到小排序
 alert(arrDemo);//100,51,50,10



1.数组调用sort方法后,会影响本身(而非生成新数组)


2.sort()方法默认是按字符来排序的,所以在对数字型数组排序时,不可想当然的以为会按数字大小排序!


3.要改变默认的sort行为(即按字符排序),可以自行指定排序规则函数(如本例所示)


效率经我测试不管是在ie7还是在ff3下,都是sort1要快。


如希望通过二维数组中的第二列数据排序:


<script language="javascript">
<!--
var testArray = new Array();
testArray[0]= new Array('e','2','g');
testArray[1]= new Array('b','3','c');
testArray[2]= new Array('a','1','a');  
testArray[3]= new Array('d','4','h');  
testArray.sort(sortfunction);
alert(testArray[0] + " " + testArray[1] + " " + testArray[2] + " " + testArray[3])
// 排序方法中有两个参数,表示数组中两个用来排序的元素
//
function sortfunction(x,y)
{
 return x[2].charCodeAt(0) - y[2].charCodeAt(0);//根据二维数组的第三列的第一个字母的ASCII码来降序排序
}
    // -->
</script>



自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论