« 国外域名注册商价格表DOM中document.getElementById效率问题 »

javascript中sort的使用方法以及稳定排序的实现

项目中要实现表格按列排序,研究了几天,在以前的表格控件中实现了这个功能,其中关于sort的使用可能是很多刚接触JavaScript的朋友们没有接触过的,其实也不难,为了让大家少走弯路,我列举一个例子:
为了通用性,我使用二维数组,依据第一列的大小进行排序。数据内容为字符串。
<script type="text/javascript">
function sortAsc(a, b)
{
    if (a.n = b.n)//如果要稳定排序,必须在相等的时候返回0
    {
        return 0;
    }
    else
    {
        return ( a.n > b.n ? 1 : -1);//当a.n > b.n,就返回1,交换顺序,否则返回-1,位置不变
    }
}

function sortDesc(a, b)
{
    if (a.n = b.n)
    {
        return 0;
    }
    else
    {
        return ( a.n < b.n ? 1 : -1);
    }
}
var a = [
    
    { n : 1, v : "a1" }, { n : 1, v : "a2" }, { n : 2, v : "b1" }, { n : 0, v : "z1" }
    
];

a.sort(sortAsc)//升序
alert(a.join(" "));//将排完序的数组显示出来
a.sort(sortDesc)//降序
alert(a.join(" "));

</script>
      在使用中需要注意的是由于sort为系统内部函数,所以在自定义的排序函数(在该例子中为sortAsc和sortDesc)中不能使用外部对象,即sortAsc和sortDesc只能接受固定的参数a和b,如果使用OO编程时要使用外部对象的属性,只能以全局变量的方式传进去。
原创文章如转载,请注明:转载自悠悠博客 [ http://www.ajaxstu.com/ ]

相关文章:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。