http://topic.csdn.net/u/20070920/19/4e1e843f-02e4-4b2a-8166-9f034d9c5847.html
是这个帖子的,我主要不解的地方是你对数组加了属性tempA[i].objddValue=a[i];
我测试是得不到结果的,之前还看过你的一个表格排序,你也用了这样的方法,
能解释一下吗

解决方案 »

  1.   

    我在IE6。0。2800。1106下测试通过。tempA是排序时用来比较的数据
    而真正需要排序的是a
    所以排a里的每一个元素附到tempA上的每一个元素上
    然后对tempA排序
    然后把附在tempA元素上的a元素取回到a里去
    就完成了对a的排序。
    tempA[i].objddValue=a[i];
    ----重复上一贴内容:
    整段代码的目的是想减少排序函数(比较函数)的对象调用层次。 
    对象调用层次越少,速度越快。
      

  2.   

    tempA[i].objddValue=a[i]; 
    版主我还是没有明白上面的意思,alert出来是undefine的,它的作用是什么,
    我加分帮忙好吗?
      

  3.   

    朋友们都来帮帮忙啊,谢谢了,应该是不难的问题吧,我就想知道
    tempA[i].objddValue=a[i]
    这个写法的意义
      

  4.   

    以前的代码有误,你看这一个吧:<html><head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>New Page 2</title>
    </head><body>
    自己调整a的长度,和if里的false/true,进行比较
    </body></html>
    <script > 
    var   a=[["62","ccc","12"], 
    ["59","study","8"], 
    ["61","aaa","12"], 
    ["13","商务部1组1","5"], 
    ["1","研发部","12"], 
    ["3","研发部2组","1"], 
    ["4","商务部","12"],  
    ["55","aa","54"]]; var d1=new  Date();; if(false)//按字符串排序,如果数据量少于2000可以这样 

      a.sort(function(a1,a2){return   (a1[0] >a2[0])?1:-1;}); 

    else //按字符串排序,如果数据量很大可以这样 

      var   tempA=new   Array(); 
      for(var   i=a.length-1;i >-1;i--){ 
        tempA[i]=new String(a[i][0]); 
        tempA[i].objValue=a[i]; //String对象加自定义属性,将需要排序的对象附在String对象上
      }
      tempA.sort(); //对String对象数组排序
      for(var   i=a.length-1;i >-1;i--)  a[i]=tempA[i].objValue;  //将附在排序好的String对象上的自定义属性取回到数组A} 
    alert(a.length+"---"+(new   Date()-d1)); 
    //alert(a.join("\n")); 
    // 
    </script >