使用js对二维数组进行快速排序的写法实例

2023-05-3112:42:20编程语言入门到精通Comments1,335 views字数 2073阅读模式

js数组的排序方法有很多,冒泡法,插入法等等,不过对于数组的排序来说,js提供了一个非常实用的函数sort(),可以对数组进行自动排序,不需要我们手写函数代码进行排序。然而,当我需要排序的数据是一些二维数组时,sort()方法就不能再直接使用了,需要使用一点技巧。本文介绍如何使用js对二维数组进行快速排序的写法。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/43739.html

假如我们有几组二维数组(姓名,年龄):文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/43739.html

'jack',20
'tony',25
'stone',26
'mandy',23

现在需要对他们按照年龄从小到大来排序,我们该怎样编写代码呢?文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/43739.html

1)、自定义对象属性:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/43739.html

function Persion(name,age){
    this.name=name;
    this.age=age;
}

2)、声明数组,并赋值文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/43739.html

var objectList = new Array();
objectList.push(new Persion('jack',20));
objectList.push(new Persion('tony',25));
objectList.push(new Persion('stone',26));
objectList.push(new Persion('mandy',23));

3)、按年龄从小到大排序文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/43739.html

​​​​​​​objectList.sort(function(a,b){
   return a.age-b.age}
);

4)、输出数组数据文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/43739.html

​​​​​​​for(var i=0;i<objectList.length;i++){
    document.writeln('<br />age:'+objectList[i].age+' name:'+objectList[i].name);
}

输出结果为:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/43739.html

​​​​​​​age:20 name:jack
age:23 name:mandy
age:25 name:tony
age:26 name:stone

完整代码如下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/43739.html

​​​​​​​<script type="text/javascript">
    var objectList = new Array();
    function Persion(name,age){
        this.name=name;
        this.age=age;
    }
    objectList.push(new Persion('jack',20));
    objectList.push(new Persion('tony',25));
    objectList.push(new Persion('stone',26));
    objectList.push(new Persion('mandy',23));
    //按年龄从小到大排序
    objectList.sort(function(a,b){
        return a.age-b.age});
    for(var i=0;i<objectList.length;i++){
        document.writeln('<br />age:'+objectList[i].age+' name:'+objectList[i].name);
    }
</script>

可能遇到的问题文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/43739.html

“10,51,100,50”排序为什么是“10,100,50,51”文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/43739.html

默认情况下sort方法是按ascii字母顺序排序的,而非我们认为是按数字大小排序。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/43739.html

如何处理?参考如下例子:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/43739.html

​​​​​​​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

我要数组从大到小排序怎么写?文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/43739.html

​​​​​​​<script type="text/javascript">
    var arrSimple2=new Array(1,8,7,6);
    arrSimple2.sort(function(a,b){
        return b-a});
    document.writeln(arrSimple2.join());
    //解释:a,b表示数组中的任意两个元素,若return > 0 b前a后;reutrn < 0 a前b后;a=b时存在浏览器兼容
    //简化一下:a-b输出从小到大排序,b-a输出从大到小排序。
</script>

通过上述几个实例的学习,js对数组(包括二维数组)的排序就没有问题了。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/43739.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/ymba/43739.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定