//编号 //姓名 //性别 //年龄 //武力 //政治 // 智力  //统率 //魅力
    var a1 = new Array("001","司马懿","男","18","63","93","96","98","87");
    var a2 = new Array("002","诸葛亮","男","18","44","95","100","92","92");
    var a3 = new Array("003","孙尚香","女","18","86","63","67","72","86");
    var a4 = new Array("004","夏侯渊","男","18","91","61","54","87","80");
    var a5 = new Array("005","黄月英","女","18","41","87","88","51","79");
    var a6 = new Array("006","庞统","男","18","62","85","97","78","69");
    var a7 = new Array("007","刘备","男","18","73","78","74","75","99");
    var a8 = new Array("008","孙权","男","18","67","89","80","76","95");
    var a9 = new Array("009","陆逊","男","18","69","87","95","96","90");
    var a10 = new Array("010","周瑜","男","18","30","23","94","30","62");
    var a11 = new Array("011","荀彧","男","18","58","98","95","52","93");
    var a12 = new Array("012","黄忠","男","18","93","52","60","86","75");
    var a13 = new Array("013","曹操","男","18","78","94","91","96","96");
    var a14 = new Array("014","张角","男","18","38","80","86","86","98");
    var a15 = new Array("015","貂蝉","女","18","38","65","81","30","94");
    var a16 = new Array("016","袁绍","男","18","69","73","70","81","90");
    var a17 = new Array("017","程昱","男","18","50","79","90","70","58");
    var a18 = new Array("018","郭嘉","男","18","48","84","98","51","78");
    var a19 = new Array("019","甄氏","女","18","67","66","91","53","94");
    var a20 = new Array("020","曹丕","男","18","71","86","83","70","82");
    var a21 = new Array("021","徐庶","男","18","64","80","93","84","81");
    var a22 = new Array("022","贾诩","男","18","49","85","97","86","57");
    var a23 = new Array("023","张昭","男","18","32","97","84","42","80");
    var a24 = new Array("024","鲁肃","男","18","56","90","92","80","89");
    var a25 = new Array("025","小乔","女","18","31","77","73","33","92");
    var a26 = new Array("026","大乔","女","18","31","78","72","34","92");
    var a27 = new Array("027","陈宫","男","18","55","83","89","78","68");
    var a28 = new Array("028","华佗","男","18","29","72","68","29","70");
    var a29 = new Array("029","夏侯悙","男","18","90","70","58","89","81");
    var a30 = new Array("030","马云禄","男","18","83","46","53","78","77");
    var a31 = new Array("031","公孙瓒","男","18","73","46","70","84","77");
    var a32 = new Array("032","张辽","男","18","92","58","78","93","78");
    var a33 = new Array("033","马超","男","18","97","26","47","88","82");
    var a34 = new Array("034","吕布","男","18","100","13","38","87","40");
    var a35 = new Array("035","赵云","男","18","96","65","76","91","81");
    var a36 = new Array("036","孙策","男","18","92","70","69","92","92");
    var a37 = new Array("037","文丑","男","18","94","25","38","78","38");
    var a38 = new Array("038","关羽","男","18","97","62","75","95","93");
    var a39 = new Array("039","甘宁","男","18","94","18","76","86","58");
    var a40 = new Array("040","姜维","男","18","89","67","90","90","80");
    var a41 = new Array("041","吕蒙","男","18","81","78","89","91","82");
    var a42 = new Array("042","颜良","男","18","93","32","46","79","53");
    var a43 = new Array("043","徐晃","男","18","88","48","74","72","71");
    var a44 = new Array("044","太史慈","男","18","93","58","66","82","79");
    var a45 = new Array("045","孙坚","男","18","90","73","74","93","91");
    var a46 = new Array("046","董卓","男","18","87","19","69","74","37");
    var a47 = new Array("047","曹仁","男","18","86","46","56","89","76");
    var a48 = new Array("048","典韦","男","18","95","29","53","76","58");
    var a49 = new Array("049","许诸","男","18","96","20","43","65","59");
    var a50 = new Array("050","张飞","男","18","98","22","40","85","45");
    
    var a = new Array(a1,a2,a3,a4,a4,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31,a32,a33,a34,a35,a36,a37,a38,a39,a40,a41,a42,a43,a44,a45,a46,a47,a48,a49,a50);
拥有数组如上,我想做一个排序,让50个一维数组随着武力值的高低而降序。使用过sort方法,可是单纯的排序武力值,但是当我加上名字的时候就乱序了。如下var o = [];
            for(var i=0; i<a.length; i++)
            {
                var p = a[i][4]+a[i][1]+"\n";
                o.push(p);
            }
            o.sort(function(m1,m2){return m2 - m1 });
            alert(o);
是不是我所加入的名字使得整个武力值增大了?求大佬解惑

解决方案 »

  1.   

    要把姓名变成type 嘛
      

  2.   


    对的,我也知道是这个问题,但是我不懂如何去解决了大佬求助你把数组变成对象这个问题就很好解决了
    var o = [];
                for(var i=0; i<a.length; i++)
                {
                    let p = {name:a[i][1],wl:a[i][4]};
                    o.push(p);
                }
                o.sort(function(m1,m2){return m2.wl - m1.wl });
                console.log(o);
      

  3.   


    对的,我也知道是这个问题,但是我不懂如何去解决了大佬求助你把数组变成对象这个问题就很好解决了
    var o = [];
                for(var i=0; i<a.length; i++)
                {
                    let p = {name:a[i][1],wl:a[i][4]};
                    o.push(p);
                }
                o.sort(function(m1,m2){return m2.wl - m1.wl });
                console.log(o);

    原来是这样变成对象的吗,我刚才试的是   a[i][1]+{type:a[i][4]};
      

  4.   


    对的,我也知道是这个问题,但是我不懂如何去解决了大佬求助你把数组变成对象这个问题就很好解决了
    var o = [];
                for(var i=0; i<a.length; i++)
                {
                    let p = {name:a[i][1],wl:a[i][4]};
                    o.push(p);
                }
                o.sort(function(m1,m2){return m2.wl - m1.wl });
                console.log(o);

    原来是这样变成对象的吗,我刚才试的是   a[i][1]+{type:a[i][4]};你这样做还是个运算不了的字符串, 
    你把我的代码复制替换你的代码, 打开控制台看看就知道了
      

  5.   


    对的,我也知道是这个问题,但是我不懂如何去解决了大佬求助你把数组变成对象这个问题就很好解决了
    var o = [];
                for(var i=0; i<a.length; i++)
                {
                    let p = {name:a[i][1],wl:a[i][4]};
                    o.push(p);
                }
                o.sort(function(m1,m2){return m2.wl - m1.wl });
                console.log(o);

    原来是这样变成对象的吗,我刚才试的是   a[i][1]+{type:a[i][4]};你这样做还是个运算不了的字符串, 
    你把我的代码复制替换你的代码, 打开控制台看看就知道了出错了,我换成你的代码以后点击button显示函数的值为null,未定义或不是func对象。之前是没问题的
      

  6.   


    对的,我也知道是这个问题,但是我不懂如何去解决了大佬求助你把数组变成对象这个问题就很好解决了
    var o = [];
                for(var i=0; i<a.length; i++)
                {
                    let p = {name:a[i][1],wl:a[i][4]};
                    o.push(p);
                }
                o.sort(function(m1,m2){return m2.wl - m1.wl });
                console.log(o);

    原来是这样变成对象的吗,我刚才试的是   a[i][1]+{type:a[i][4]};你这样做还是个运算不了的字符串, 
    你把我的代码复制替换你的代码, 打开控制台看看就知道了console为定义
      

  7.   


    对的,我也知道是这个问题,但是我不懂如何去解决了大佬求助你把数组变成对象这个问题就很好解决了
    var o = [];
                for(var i=0; i<a.length; i++)
                {
                    let p = {name:a[i][1],wl:a[i][4]};
                    o.push(p);
                }
                o.sort(function(m1,m2){return m2.wl - m1.wl });
                console.log(o);

    原来是这样变成对象的吗,我刚才试的是   a[i][1]+{type:a[i][4]};你这样做还是个运算不了的字符串, 
    你把我的代码复制替换你的代码, 打开控制台看看就知道了出错了,我换成你的代码以后点击button显示函数的值为null,未定义或不是func对象。之前是没问题的不知道你的代码是怎么写的
    说个思路自己去实现吧
    要比较大小一般用的是数字,所以sort函数里面的比较用的是数字的运算
    你想把名字和武力值放一起比较是不太现实的
    比较简单的方法就是创建一个对象,对象里面包含的属性是名字和武力值,比较的时候用武力值比较就行了
      

  8.   

    5楼正解         此时o为对象,需要遍历o取name和wl
    楼主console.log莫不是写错了
      

  9.   


    对的,我也知道是这个问题,但是我不懂如何去解决了大佬求助你把数组变成对象这个问题就很好解决了
    var o = [];
                for(var i=0; i<a.length; i++)
                {
                    let p = {name:a[i][1],wl:a[i][4]};
                    o.push(p);
                }
                o.sort(function(m1,m2){return m2.wl - m1.wl });
                console.log(o);

    原来是这样变成对象的吗,我刚才试的是   a[i][1]+{type:a[i][4]};你这样做还是个运算不了的字符串, 
    你把我的代码复制替换你的代码, 打开控制台看看就知道了console为定义你不会是用ie很低的版本吧..
      

  10.   

    用字符串也可以,只要在排序时再把字符串中的数值提取出来进行减法计算就可以            var o = [];
                for(var i=0; i<a.length; i++)
                {
                    var p = a[i][4]+a[i][1]+"\n";
                    o.push(p);
                }
                o.sort(function(m1,m2){return parseInt(m2.match(/\d+/)[0], 10) - parseInt(m1.match(/\d+/)[0], 10) });
                alert(o);