<script type="text/javascript">
var ids=",1,5,2,8";
var names=",a,x,b,g";
//求以ids进行升序排列,并且保证和names的值的下标对应关系不变(即1-a,5-x,2-b,8-g)
//求得的结果如下:求js算法
ids=",1,2,5,8";
names=",a,b,x,g";
</script>

解决方案 »

  1.   


    var ids=",1,5,2,8".split(',');
    var names=",a,x,b,g".split(',');
     
    for(var i=0;i<ids.length;i++) ids[i]=[ids[i],names[i]];
    ids.sort();
    for(var i=0;i<ids.length;i++) {
    names[i]=ids[i][1];
    ids[i]=ids[i][0];
    }
    alert( ids )
    alert( names )
      

  2.   

    1.自己写个普通冒泡去排序ids,在ids交换位置的时候也同时交换names的位置,相当于names就是个附庸2.利用sort的传入参数(一个排序函数),有点麻烦,只是有个思路,未尝试
      

  3.   

    其实在排序 ids的时候同时把names的值也换一下位置就行了。
    建议先转成数组再处理更方便些
      

  4.   

    数字在两位以就会出错
    var ids=",16,5,2,8"
      

  5.   

    数字在两位以就会出错
    var ids=",16,5,2,8"
    改成以数字排序var ids=",1,16,2,8".split(',');
    var names=",a,x,b,g".split(',');
     
    for(var i=0;i<ids.length;i++) ids[i]=[ids[i],names[i]];
    ids.sort(function(a,b){return a[0]-b[0] });
    for(var i=0;i<ids.length;i++) {
    names[i]=ids[i][1];
    ids[i]=ids[i][0];
    }
    alert( ids )
    alert( names )
      

  6.   

    稍作修改即可<html>
    <head>
    <script type="text/javascript">
    function sortnumber(a,b){
    return a[0] - b[0];
    }
    var ids=",16,5,2,8".split(',');
    var names=",a,x,b,g".split(',');
      
    for(var i=0;i<ids.length;i++) ids[i]=[ids[i],names[i]];
    alert(ids[1]);
    ids.sort(sortnumber);
    for(var i=0;i<ids.length;i++) {
        names[i]=ids[i][1];
        ids[i]=ids[i][0];
    }
    alert( ids )
    alert( names )</script>
    </head>
    <body>
    123
    </body>
    </html>
      

  7.   

    用两个数组不方便,先合成一个对象的数组var ids="16,5,244,8".split(',');
    var names="a,x,b,g".split(',');
    var arr = []; 
    for(var i=0;i<ids.length;i++) arr[i]={id:ids[i],name:names[i]};
    arr.sort(function (a,b){
    return a.id-b.id;
    });
    for(var i=0;i<arr.length;i++) {
    ids[i]=arr[i].id;
    names[i]=arr[i].name;
    }
    alert( ids )
    alert( names )