当前位置:首页 > Js/Jquery

javascript二维数组排序

happyfhb3年前 (2023-03-26)Js/Jquery1330
摘要:js数组的排序方法有很多,冒泡法,插入法等等,不过对于数组的排序来说,js提供了一个非常实用的函数…
  • 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对数组(包括二维数组)的排序就没有问题了。


扫描二维码推送至手机访问。

版权声明:本文由海海日记-冯海滨博客发布,如需转载请注明出处。

本文链接:http://www.fenghaibin.com/?id=1356

返回列表

上一篇:手机号段正则表达式 (2019-01 最新)

没有最新的文章了…

“javascript二维数组排序” 的相关文章

jQuery再学习之二、jQuery选择器

前言jQuery选择器非常非常强大而且灵活,要完全掌握它是需要狠下一番功夫的。当然,掌握了主要的部分后,其它的了解就好,因为一些比较偏的毕竟用得少,而且可以有其它方法来实现。…

easyui中combobox的值改变onchang事件

今天在公司里,那jquery中的easy-ui-里面的combobox,真的郁闷死了!    把郁闷的事情记下来,下次就不会犯错了!…

js的replace实现全部替换的方法

<script language="javascript">    function change(){     var str = "aca…

无比纠结的html转移

最近做jqueryeasyui的一个项目被html转义困扰主要难点在于换行符和特殊符号。那 textarea 为列子提交服务器前用escape编码服务器接收到编码数据后 解码 然后 解码前.Replace("+", "%2b")//将+号在编码&nb…

jquery 判断 iframe 是否加载完成

在你需要验证是否加载完成的iframe上用jquery绑定load事件即可,像这样/假设你需要验证的iframe的id是a,那么像下面这样做就可以了 $(function(){     $("#a").on("load&quo…

js 操作ul li

 function kefushengfentianjia() {             var shengfen =&nbs…

发表评论

访客

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