有5个变量,假如: var a=10;var b=8;var c=4;var d=2;var e=6;我想把这5个变量从大到小排列,并取得前三个,如10,8,6 但不想以数字的形式显示,要显示成abe,该怎么实现?
谢谢!

解决方案 »

  1.   

    这样?
    <script type="text/javascript">
    <!--
    var t = [{n:"a",v:10},{n:"b",v:8},{n:"c",v:4},{n:"d",v:2},{n:"e",v:6}]
    t.sort(function(a,b){return b.v-a.v});
    var tt = ""
    for (var i=0; i<3; i++) {
    tt+=t[i].n;
    }
    alert(tt);
    //-->
    </script>
      

  2.   


    变量放到一个对象中,可以用 for in 获取对象名称
    var obj = {a:3,b:4,c:6};
    for(var o in obj){
    alert(o +"\n"+ obj[o]);
    }
      

  3.   

    其中R,I,A,S,E,C存储的是不确定的整数,都是变量。我把它放到arr数组里面,想获取排序后最大的前三个数的对象名,请问怎么获取啊?
    var arr=new Array(R,I,A,S,E,C);
    var obj={R:arr[0],I:arr[1],A:arr[2],S:arr[3],E:arr[4],C:arr[5]}
    function sortNumber(a, b)
            {
           return a - b
            }
    var mm=arr.sort(sortNumber);
    for(var i in mm){
    alert(i+":"+mm[i]);                               
    }
      

  4.   


    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    </head><body>
    <script>
    var R=5,I=3,A=78,S=65,E=7,C=10;
    var arr = [
    {variables:"R",value:R},
    {variables:"I",value:I},
    {variables:"A",value:A},
    {variables:"S",value:S},
    {variables:"E",value:E},
    {variables:"C",value:C}
    ];
    arr.sort(function(a,b){ return b.value-a.value;})
    for(var i=0;i<arr.length;i++)
    document.write('key:'+arr[i].variables+' value:'+arr[i].value+'<br>');
    </script>
    </body>
    </html>
      

  5.   

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
    <title>无标题文档</title>
        <script type="text/javascript">
            var data = {a:10,b:8,c:4,d:2,e:6,g:11,f:4};
            var arr = [];
            for(var i in data){
                if(arr[data[i]]!=""&&arr[data[i]]!=undefined){
                    arr[data[i]]+=","+i
                }else{
                    arr[data[i]]=i;
                }
                
            }
            for(var i=arr.length-1;i>=0;i--){
                if(arr[i]!=""&&arr[i]!=undefined){
                    document.write(arr[i]);
                    document.write(",");    
                }
            }
            
        </script>
    </head><body></body>
    </html>
      

  6.   

    刚学Javascript,说说思路并附上代码:
    思路:定义对象直接量,把对象属性值存到数组中,利用数组的sort方法降序排列之后,再利用值索引到原对象的属性,最后输出。
    代码:
    var orgnum={
    "a":10,
    "b":8,
    "c":4,
    "d":2,
    "e":6
    };
    function sort(obj)
    {
    var orgarray=new Array();
    var i=0;
    for (var name in obj)
    {
    orgarray[i]=obj[name];
    i++;
    }
    for (name in obj)
    {
    document.write("属性名:"+name+""+"属性值:"+obj[name]+"<br/>");
    }
    for (var j=0;j<orgarray.length;j++)
    {
    document.write("数组元素依次为:"+orgarray[j]+"<br/>");
    }
    var sortedarray=orgarray.sort(function (x,y){return y-x;});
    for (var k=0;k<sortedarray.length;k++)
    {
    document.write("排序之后的数组元素依次为:"+sortedarray[k]+"<br/>");
    }
    for (var l=0;l<sortedarray.length;l++)
    {
    for (name in obj)
    {
    if (obj[name]==sortedarray[l])
    document.write("从大到小排序之后的第"+(l+1)+"个元素是:"+name+"<br/>");
    }
    }
    }
    sort(orgnum);
      

  7.   

    你好,我想取arr[i].variables的前三个字母,该怎么办?用slice,Substring都不行啊
      

  8.   


    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    </head><body>
    <script>
    var R=5,I=3,A=78,S=65,E=7,C=10;
    var arr = [
    {variables:"R",value:R},
    {variables:"I",value:I},
    {variables:"A",value:A},
    {variables:"S",value:S},
    {variables:"E",value:E},
    {variables:"C",value:C}
    ];
    arr.sort(function(a,b){ return b.value-a.value;})
    var words = [];
    for(var i=0;i<3;i++)
    if(arr[i]&&arr[i].variables)words.push(arr[i].variables);
    document.write('前三个存在数组里,是:[' + words + '];');
    </script>
    </body>
    </html>给楼主存到数组里了。
    8楼的剑走偏锋,其实很巧妙。
      

  9.   

    想法挺巧的,可arr[]中存在大量的undefined类型的数据,有些浪费了吧。
      

  10.   

    8楼的方法运行速度取决于所给出的最大的数字。我拿8楼和14楼的代码做测试,附代码和测试结果:
    <html>
    <head>
    <script type="text/javascript">
    //8楼方法:
    //利用对象的属性值作为新建数组的元素的下标,而属性值对应的属性名则作为下标对应的值,只要按照下标从大到小的顺序排列,即可将属性名列出。
    //但这样做给数组中引入过多无谓的undefined数据,造成了空间的浪费。
    function sort_floor8()
    {
    var data = {a:10,b:8,c:4,d:4,e:6,g:11,f:4,h:10000000};
          var arr = [];
          for(var i in data)
          {
           if(arr[data[i]]!=""&&arr[data[i]]!=undefined)
           {
             arr[data[i]]+=","+i
            }
            else
            {
             arr[data[i]]=i;
            }
          }
          for(var i=arr.length-1;i>=0;i--)
          {
           if(arr[i]!=""&&arr[i]!=undefined)
           {
             document.write(arr[i]);
             document.write(",");    
            }
          }
          }
    //14楼方法:
       function sort_floor14()
       {
       var R=5,I=3,A=78,S=65,E=7,C=10,H=10000000;
    var arr = [
        {variables:"R",value:R},
        {variables:"I",value:I},
        {variables:"A",value:A},
        {variables:"S",value:S},
        {variables:"E",value:E},
        {variables:"C",value:C},
        {variables:"H",value:H}
    ];
    arr.sort(function(a,b){ return b.value-a.value;})
    var words = [];
    for(var i=0;i<3;i++)
        if(arr[i]&&arr[i].variables)words.push(arr[i].variables);
    document.write('前三个存在数组里,是:[' + words + '];');
    }      function test(fun)
          {
           var before_time=new Date();
           fun();
           var after_time=new Date();
           document.write("运行时间是:"+(after_time-before_time)+" ms.<br/>");
          }       
    </script>
    </head>
    <body>
    <input type="button" id="button1" value="8楼排列方法测速" onclick="test(sort_floor8);">
    <br/>
    <input type="button" id="button1" value="14楼排列方法测速" onclick="test(sort_floor14);">
    </body>
    </html>测试结果:
    FF3.6下
    8楼速度:3539 ms.
    14楼速度:12 ms.
    IE6下
    8楼速度:10031 ms.
    14楼速度:1 ms.