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

javascript二维数组排序相关推荐

  1. 从JavaScript二维数组排序说开去(2)

    从上一篇文章里面我们已经知道了,需要通过sort函数,定义自己的排序比较函数.sort会回调这个函数,在排序时逐个比较元素. 那么问题来了,如果我想比较多个列,至少比较2列,使得其有效排序, 如果第2 ...

  2. php 二维排序函数,PHP二维数组排序函数

    PHP一维数组的排序可以用sort(),asort(),arsort()等函数,但是PHP二维数组的排序需要自定义. 以下函数是对一个给定的二维数组按照指定的键值进行排序,先看函数定义: functi ...

  3. php 二维数组排序函数,php自定义二维数组排序函数array

    这次给大家带来php自定义二维数组排序函数array,php自定义二维数组排序函数array的注意事项有哪些,下面就是实战案例,一起来看一下. 这篇文章主要介绍了php自定义二维数组排序函数array ...

  4. 【C 语言】二级指针作为输入 ( 二维数组 | 抽象业务函数 | 二维数组打印函数 | 二维数组排序函数 )

    文章目录 一.抽象 二维数组 业务函数 1.二维数组 打印函数 2.二维数组 排序函数 二.完整代码示例 一.抽象 二维数组 业务函数 1.二维数组 打印函数 注意 , 二维数组 作为 函数参数 输入 ...

  5. 【C 语言】二级指针作为输入 ( 二维数组 | 二维数组遍历 | 二维数组排序 )

    文章目录 一.二维数组 1.二维数组声明及初始化 2.二维数组遍历 3.二维数组排序 二.完整代码示例 一.二维数组 前几篇博客中 , 介绍的是指针数组 ; 指针数组 的 结构特征 是 , 数组中的每 ...

  6. C++ 对二维数组排序 升序 降序

    点击查看更多通信与专业知识 今天在做下面这道题的时候糊涂了,把二维数组的排序做错了. 题目 假设有打乱顺序的一群人站成一个队列,数组 people 表示队列中一些人的属性(不一定按顺序).每个 peo ...

  7. Java二维数组排序(按照某一列值大小)

    利用Comparator接口来实现: 若对Comparator接口不熟悉请先看这一篇:https://blog.csdn.net/weixin_43849277/article/details/108 ...

  8. PHP面试题:写一个二维数组排序算法函数,能够具有通用性,可以调用php内置函数(array_multisort())

    //二维数组排序, $arr是数据,$keys是排序的健值,$order是排序规则,1是升序,0是降序 function array_sort($arr, $keys, $order=0) {if ( ...

  9. Java黑皮书课后题第8章:*8.16(对二维数组排序)编写一个方法,使用下面的方法头对二维数组排序。这个方法首先按行排序,然后按列排序

    *8.16(对二维数组排序)编写一个方法,使用下面的方法头对二维数组排序.这个方法首先按行排序,然后按列排序 题目 题目描述 破题 代码 运行实例 题目 题目描述 *8.16(对二维数组排序)编写一个 ...

最新文章

  1. python网上编程课程-少儿编程 为你解读Python编程课程
  2. 【Python】for 循环倒叙遍历
  3. hdu 3999The order of a Tree
  4. abctod_123456
  5. react+ant练习
  6. Kerberos安装及拖管Ambari 2.7
  7. PostgreSQL 数据离散性 与 索引扫描性能(btree and bitmap index scan)
  8. 解析:百度快照与站点权重的关系!
  9. S3C2440看门狗定时器(Watchdog)
  10. 提纲挈领webrtc音频处理算法之写在前面的话
  11. 苏宁小店门店数量一年锐减428家 张近东之子张康阳为实控人
  12. word格式与pdf格式相互转换
  13. 一分钟了解光纤、单模光纤、多模光纤
  14. LDA变分法和采样法
  15. 米哈游服务器一个月维护消费多少,崩坏3:为什么现在还有这么多米卫兵一直维护米哈游?这个理由说到心里去了...
  16. 首款国产全画幅8K50P广播级摄像机
  17. AE快速批量添加字幕
  18. mysql 数据库的编辑工具有哪些_常用的MySQL数据库管理工具有哪些
  19. 审查元素html表格后缀,审查元素
  20. CodeForces - 710F String Set Queries

热门文章

  1. mysql语言的特点不包括_SQL数据库题库及答案
  2. Kali Linux 如何搭建钓鱼WIFI(图文炒鸡详细)
  3. Fragment管理库:Navigation
  4. 对老师表示感谢的编程c语言,感谢C语言的老师
  5. “风口”只是一方面,看家电电商如何玩转立体化营销问鼎第一渠道
  6. 鸿蒙支持ntfs,文件系统 FAT/FAT32/NTFS/ufs/ext3/reiserfs介绍
  7. 一点到另外两点所成直线的距离
  8. 模糊数学学习笔记 4:模糊关系
  9. 如何彻底的删除MySQL数据库
  10. 2022年注册安全工程师安全生产专业实务(金属非金属矿山安全)考试模拟试题卷及答案