博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript二维数组排序
阅读量:6582 次
发布时间:2019-06-24

本文共 2186 字,大约阅读时间需要 7 分钟。

js使用sort()函数对二维数组快速排序的写法

作者:admin    时间:2015-7-3 9:31:4    浏览:
1847
    • js数组的排序方法有很多,冒泡法,插入法等等,不过对于数组的排序来说,js提供了一个非常实用的函数sort(),可以对数组进行自动排序,不需要我们手写函数代码进行排序。然而,当我需要排序的数据是一些二维数组时,sort()方法就不能再直接使用了,需要使用一点技巧。本文介绍如何使用js对二维数组进行快速排序的写法。

      假如我们有几组二维数组(姓名,年龄):

      'jack',20

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

      现在需要对他们按照年龄从小到大来排序,我们该怎样编写代码呢?

      1)、自定义对象属性:

      function Persion(name,age){

                  this.name=name;
                  this.age=age;
      }

      2)、声明数组,并赋值

      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)、按年龄从小到大排序

      objectList.sort(function(a,b){

      return a.age-b.age});

      4)、输出数组数据

      for(var i=0;i<objectList.length;i++){

                  document.writeln('<br />age:'+objectList[i].age+' name:'+objectList[i].name);
      }

      输出结果为:

      age:20 name:jack

      age:23 name:mandy
      age:25 name:tony
      age:26 name:stone

       完整代码如下:

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

      可能遇到的问题

      “10,51,100,50”排序为什么是“10,100,50,51”?

      默认情况下sort方法是按ascii字母顺序排序的,而非我们认为是按数字大小排序。

      如何处理?参考如下例子:

      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

      我要数组从大到小排序怎么写?

      <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.cnblogs.com/LXYX/p/5375677.html

你可能感兴趣的文章
我的友情链接
查看>>
分区技术学习一
查看>>
Juniper 高级选项
查看>>
编程能力的四种境界
查看>>
编译安装mysql
查看>>
在windows上秒开应用程序
查看>>
【20180611】MySQL OOM
查看>>
Python面向对象编程(一)
查看>>
决心书
查看>>
如何把图片上的文字转换成word?
查看>>
7z命令行
查看>>
C语言编程实现 输入一个非负整数,返回组成它的数字之和(递归方法)
查看>>
c3p0
查看>>
我的友情链接
查看>>
引号-下划线,连接多个变量
查看>>
我的友情链接
查看>>
38线程1-Thread-local-Timer
查看>>
处理svn的 File '/aa' is out of date
查看>>
解决 Ubuntu 16.04 LTSSublime text3中文问题
查看>>
mysql主从复制实现数据库同步
查看>>