function rowSortFun(s_id){
    $("#div"+s_id).show();   
}

解决方案 »

  1.   

    感觉问题如果慢应该出在sort函数上,我也去试试
      

  2.   

    先放一个准备测试用例的方法,虽然只有两列
    <textarea id="textarea1">
    </textarea>
    <script language=javascript>
    var tempStr="abcdefghijklmn"
    var a=new Array();
    for(var i=0;i<500;i++)
    {
    a[i]="<tr><td>"+tempStr.charAt(Math.floor(Math.random()*14))+"</td><td>"+(Math.floor(Math.random()*50))+"</td></tr>"
    }
    document.getElementById("textarea1").value=(a.join("\r\n"))
    </script>
      

  3.   

    这个方法可以提高50%以上,不过代码并没有那么全,只写了降序
    <html><head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>JK:支持民族工业,尽量少买X货</title>
    <script language="javascript" srccccc="CommonJS_RowSort.js">
    function rowSortFun(tdObj,sortType){
    var d1=new Date();
      var currentColumnIndex=tdObj.cellIndex;
      var currentTbody=tdObj.parentNode.parentNode;
      var rowsArray=new Array();
      var objTd=null;
      for( var i=1;i<currentTbody.rows.length;i++){
       objTr=currentTbody.rows[i]
        rowsArray[i-1]=new Array(objTr.cells[currentColumnIndex].innerHTML,objTr);
      }
      rowsArray.sort(getSortFun(sortType));
      for(var i=0;i<rowsArray.length;i++){
        currentTbody.appendChild(rowsArray[i][1]);
      }
      alert("行数"+rowsArray.length+";所花毫秒数"+(new Date()-d1));
    }function getSortFun(sortType){
      if("stringTd"==sortType){
        return function (trObj1,trObj2){return (trObj2[0].toUpperCase()>trObj1[0].toUpperCase())?1:-1}
      }
      else if("numberTd"==sortType){
        return function (trObj1,trObj2) { return ((parseInt(trObj2[0])-parseInt(trObj1[0]))>0)?1:-1}
      }
    }</script>
    <style>
    .headerTr{background-color:#cccccc;}
    </style>
    </head><body>
    <div style="font-size:10pt;">
    注1:用法:需要排序的字段头里:&lt;td columnContentType="Text" onclick="rowSortFun(this);"&gt; 。 <br/>           
    注2:鉴于很多提出要求前台排序的人,其实并不是真的需要前台排序,所以强列建议慎用前台排序。 <br/>                 
     <br/>           <br/>    
    注:本页面仅在IE6/FireFox1.5下测试过。其它浏览器或其它版本未经测试。<br/>           
    注-----:JK:<a href="mailTo:[email protected]?subject=RowSortSample">[email protected]</a><br/>        
    <hr/>    
    </div><table border="1" width="100%" >
      <tr class="headerTr">
        <td columnContentType="Text" onclick="rowSortFun(this,'stringTd');" > 字符串或其它</td>
        <td columnContentType="Number" onclick="rowSortFun(this,'numberTd');" >数字</td>
        <td >输入框(不需要排序)</td>
      </tr>
      <tr><td>g</td><td>37</td></tr>
    <tr><td>i</td><td>17</td></tr>
    <tr><td>l</td><td>4</td></tr>
    <tr><td>g</td><td>37</td></tr>
    <tr><td>e</td><td>6</td></tr>
    <tr><td>n</td><td>48</td></tr>
    <tr><td>e</td><td>32</td></tr>
    <tr><td>i</td><td>29</td></tr>
    <tr><td>f</td><td>34</td></tr>
    <tr><td>f</td><td>15</td></tr>
    <tr><td>b</td><td>45</td></tr>
    <tr><td>g</td><td>15</td></tr>
    <tr><td>n</td><td>38</td></tr>
    <tr><td>a</td><td>7</td></tr>
    <tr><td>b</td><td>47</td></tr>
    <tr><td>n</td><td>28</td></tr>
    <tr><td>f</td><td>11</td></tr>
    <tr><td>i</td><td>47</td></tr>
    <tr><td>n</td><td>22</td></tr>
    <tr><td>e</td><td>25</td></tr>
    <tr><td>n</td><td>40</td></tr>
    <tr><td>l</td><td>44</td></tr>
    <tr><td>h</td><td>6</td></tr>
    <tr><td>h</td><td>31</td></tr>
    <tr><td>g</td><td>32</td></tr>
    <tr><td>a</td><td>39</td></tr>
    <tr><td>j</td><td>25</td></tr>
    <tr><td>a</td><td>8</td></tr>
    <tr><td>h</td><td>49</td></tr>
    <tr><td>l</td><td>25</td></tr>
    <tr><td>h</td><td>26</td></tr>
    <tr><td>l</td><td>35</td></tr>
    <tr><td>k</td><td>9</td></tr>
    <tr><td>a</td><td>25</td></tr>
    <tr><td>m</td><td>5</td></tr>
    <tr><td>g</td><td>30</td></tr>
    <tr><td>m</td><td>2</td></tr>
    <tr><td>k</td><td>14</td></tr>
    <tr><td>n</td><td>34</td></tr>
    <tr><td>f</td><td>11</td></tr>
    <tr><td>b</td><td>40</td></tr>
    <tr><td>i</td><td>45</td></tr>
    <tr><td>b</td><td>21</td></tr>
    <tr><td>i</td><td>22</td></tr>
    <tr><td>i</td><td>15</td></tr>
    <tr><td>g</td><td>7</td></tr>
    <tr><td>f</td><td>27</td></tr>
    <tr><td>j</td><td>38</td></tr>
    <tr><td>h</td><td>19</td></tr>
    <tr><td>b</td><td>39</td></tr>
    <tr><td>c</td><td>43</td></tr>
    <tr><td>n</td><td>47</td></tr>
    <tr><td>h</td><td>6</td></tr>
    <tr><td>d</td><td>40</td></tr>
    <tr><td>l</td><td>42</td></tr>
    <tr><td>j</td><td>0</td></tr>
    <tr><td>n</td><td>47</td></tr>
    <tr><td>c</td><td>47</td></tr>
    <tr><td>f</td><td>19</td></tr>
    <tr><td>f</td><td>2</td></tr>
    <tr><td>i</td><td>18</td></tr>
    <tr><td>k</td><td>39</td></tr>
    <tr><td>k</td><td>15</td></tr>
    <tr><td>n</td><td>11</td></tr>
    <tr><td>c</td><td>4</td></tr>
    <tr><td>n</td><td>2</td></tr>
    <tr><td>l</td><td>9</td></tr>
    <tr><td>g</td><td>48</td></tr>
    <tr><td>h</td><td>31</td></tr>
    <tr><td>i</td><td>4</td></tr>
    <tr><td>n</td><td>10</td></tr>
    <tr><td>l</td><td>45</td></tr>
    <tr><td>j</td><td>29</td></tr>
    <tr><td>f</td><td>27</td></tr>
    <tr><td>h</td><td>40</td></tr>
    <tr><td>f</td><td>22</td></tr>
    <tr><td>j</td><td>31</td></tr>
    <tr><td>e</td><td>39</td></tr>
    <tr><td>l</td><td>34</td></tr>
    <tr><td>l</td><td>47</td></tr>
    <tr><td>d</td><td>13</td></tr>
    <tr><td>b</td><td>30</td></tr>
    <tr><td>k</td><td>12</td></tr>
    <tr><td>h</td><td>31</td></tr>
    <tr><td>h</td><td>16</td></tr>
    <tr><td>l</td><td>4</td></tr>
    <tr><td>l</td><td>20</td></tr>
    <tr><td>l</td><td>0</td></tr>
    <tr><td>j</td><td>41</td></tr>
    <tr><td>l</td><td>45</td></tr>
    <tr><td>i</td><td>35</td></tr>
    <tr><td>k</td><td>18</td></tr>
    <tr><td>m</td><td>5</td></tr>
    <tr><td>m</td><td>16</td></tr>
    <tr><td>l</td><td>43</td></tr>
    <tr><td>n</td><td>23</td></tr>
    <tr><td>k</td><td>5</td></tr>
    <tr><td>m</td><td>30</td></tr>
    <tr><td>j</td><td>16</td></tr>
    <tr><td>l</td><td>27</td></tr>
    <tr><td>i</td><td>34</td></tr>
    <tr><td>f</td><td>32</td></tr>
    <tr><td>b</td><td>14</td></tr>
    <tr><td>i</td><td>24</td></tr>
    <tr><td>g</td><td>17</td></tr>
    <tr><td>m</td><td>6</td></tr>
    <tr><td>d</td><td>27</td></tr>
    <tr><td>a</td><td>25</td></tr>
    <tr><td>j</td><td>11</td></tr>
    <tr><td>h</td><td>22</td></tr>
    <tr><td>d</td><td>49</td></tr>
    <tr><td>n</td><td>35</td></tr>
    <tr><td>c</td><td>35</td></tr>
    <tr><td>a</td><td>4</td></tr>
    <tr><td>j</td><td>22</td></tr>
    <tr><td>l</td><td>28</td></tr>
    <tr><td>b</td><td>8</td></tr>
    <tr><td>b</td><td>21</td></tr>
    <tr><td>f</td><td>17</td></tr>
    <tr><td>e</td><td>0</td></tr>
    <tr><td>m</td><td>45</td></tr>
    <tr><td>d</td><td>0</td></tr>
    <tr><td>n</td><td>31</td></tr>
    <tr><td>h</td><td>36</td></tr>
    <tr><td>f</td><td>3</td></tr>
    <tr><td>l</td><td>33</td></tr>
    <tr><td>b</td><td>16</td></tr>
    <tr><td>m</td><td>44</td></tr>
    <tr><td>n</td><td>4</td></tr>
    <tr><td>c</td><td>15</td></tr>
    <tr><td>i</td><td>12</td></tr>
    <tr><td>n</td><td>18</td></tr>
    <tr><td>a</td><td>11</td></tr>
    <tr><td>m</td><td>2</td></tr>
    <tr><td>h</td><td>23</td></tr>
    <tr><td>f</td><td>4</td></tr>
    <tr><td>m</td><td>41</td></tr>
    <tr><td>j</td><td>46</td></tr>
    <tr><td>n</td><td>24</td></tr>
    <tr><td>i</td><td>13</td></tr>
    <tr><td>j</td><td>31</td></tr>
    <tr><td>f</td><td>36</td></tr>
    <tr><td>i</td><td>28</td></tr>
    <tr><td>f</td><td>29</td></tr>
    <tr><td>i</td><td>18</td></tr>
    <tr><td>a</td><td>14</td></tr>
    <tr><td>f</td><td>7</td></tr>
    <tr><td>f</td><td>23</td></tr>
    <tr><td>h</td><td>11</td></tr>
    <tr><td>g</td><td>14</td></tr>
    <tr><td>c</td><td>38</td></tr>
    <tr><td>n</td><td>49</td></tr>
    <tr><td>d</td><td>45</td></tr>
    <tr><td>b</td><td>47</td></tr>
    <tr><td>f</td><td>36</td></tr>
    <tr><td>i</td><td>23</td></tr>
    <tr><td>c</td><td>33</td></tr>
    <tr><td>g</td><td>25</td></tr>
    <tr><td>a</td><td>17</td></tr>
    <tr><td>e</td><td>11</td></tr>
    <tr><td>f</td><td>13</td></tr>
    <tr><td>h</td><td>27</td></tr>
    <tr><td>a</td><td>33</td></tr>
    <tr><td>g</td><td>19</td></tr>
    <tr><td>n</td><td>34</td></tr>
    <tr><td>h</td><td>45</td></tr>
    <tr><td>b</td><td>44</td></tr>
    <tr><td>g</td><td>34</td></tr>
      

  4.   

    <tr><td>a</td><td>23</td></tr>
    <tr><td>b</td><td>17</td></tr>
    <tr><td>i</td><td>49</td></tr>
    <tr><td>l</td><td>22</td></tr>
    <tr><td>g</td><td>25</td></tr>
    <tr><td>d</td><td>13</td></tr>
    <tr><td>l</td><td>8</td></tr>
    <tr><td>f</td><td>33</td></tr>
    <tr><td>j</td><td>41</td></tr>
    <tr><td>f</td><td>12</td></tr>
    <tr><td>a</td><td>6</td></tr>
    <tr><td>i</td><td>11</td></tr>
    <tr><td>k</td><td>0</td></tr>
    <tr><td>j</td><td>19</td></tr>
    <tr><td>b</td><td>20</td></tr>
    <tr><td>n</td><td>7</td></tr>
    <tr><td>k</td><td>38</td></tr>
    <tr><td>e</td><td>13</td></tr>
    <tr><td>j</td><td>10</td></tr>
    <tr><td>h</td><td>18</td></tr>
    <tr><td>f</td><td>7</td></tr>
    <tr><td>a</td><td>10</td></tr>
    <tr><td>m</td><td>16</td></tr>
    <tr><td>h</td><td>5</td></tr>
    <tr><td>h</td><td>18</td></tr>
    <tr><td>j</td><td>23</td></tr>
    <tr><td>b</td><td>22</td></tr>
    <tr><td>n</td><td>10</td></tr>
    <tr><td>m</td><td>0</td></tr>
    <tr><td>h</td><td>3</td></tr>
    <tr><td>m</td><td>24</td></tr>
    <tr><td>n</td><td>43</td></tr>
    <tr><td>a</td><td>25</td></tr>
    <tr><td>j</td><td>29</td></tr>
    <tr><td>n</td><td>4</td></tr>
    <tr><td>m</td><td>29</td></tr>
    <tr><td>e</td><td>42</td></tr>
    <tr><td>f</td><td>9</td></tr>
    <tr><td>g</td><td>18</td></tr>
    <tr><td>m</td><td>12</td></tr>
    <tr><td>i</td><td>37</td></tr>
    <tr><td>a</td><td>36</td></tr>
    <tr><td>c</td><td>16</td></tr>
    <tr><td>h</td><td>37</td></tr>
    <tr><td>e</td><td>8</td></tr>
    <tr><td>m</td><td>26</td></tr>
    <tr><td>g</td><td>43</td></tr>
    <tr><td>n</td><td>30</td></tr>
    <tr><td>h</td><td>40</td></tr>
    <tr><td>m</td><td>6</td></tr>
    <tr><td>k</td><td>46</td></tr>
    <tr><td>i</td><td>17</td></tr>
    <tr><td>a</td><td>30</td></tr>
    <tr><td>c</td><td>32</td></tr>
    <tr><td>k</td><td>26</td></tr>
    <tr><td>n</td><td>33</td></tr>
    <tr><td>n</td><td>39</td></tr>
    <tr><td>i</td><td>40</td></tr>
    <tr><td>e</td><td>33</td></tr>
    <tr><td>j</td><td>31</td></tr>
    <tr><td>e</td><td>39</td></tr>
    <tr><td>g</td><td>7</td></tr>
    <tr><td>f</td><td>3</td></tr>
    <tr><td>d</td><td>20</td></tr>
    <tr><td>f</td><td>7</td></tr>
    <tr><td>h</td><td>8</td></tr>
    <tr><td>a</td><td>29</td></tr>
    <tr><td>j</td><td>30</td></tr>
    <tr><td>l</td><td>8</td></tr>
    <tr><td>a</td><td>46</td></tr>
    <tr><td>b</td><td>34</td></tr>
    <tr><td>i</td><td>25</td></tr>
    <tr><td>e</td><td>3</td></tr>
    <tr><td>l</td><td>39</td></tr>
    <tr><td>i</td><td>4</td></tr>
    <tr><td>l</td><td>22</td></tr>
    <tr><td>l</td><td>31</td></tr>
    <tr><td>f</td><td>4</td></tr>
    <tr><td>k</td><td>38</td></tr>
    <tr><td>m</td><td>48</td></tr>
    <tr><td>a</td><td>43</td></tr>
    <tr><td>a</td><td>47</td></tr>
    <tr><td>c</td><td>36</td></tr>
    <tr><td>l</td><td>2</td></tr>
    <tr><td>c</td><td>9</td></tr>
    <tr><td>f</td><td>35</td></tr>
    <tr><td>f</td><td>14</td></tr>
    <tr><td>m</td><td>15</td></tr>
    <tr><td>n</td><td>39</td></tr>
    <tr><td>n</td><td>19</td></tr>
    <tr><td>f</td><td>45</td></tr>
    <tr><td>a</td><td>19</td></tr>
    <tr><td>d</td><td>27</td></tr>
    <tr><td>i</td><td>13</td></tr>
    <tr><td>a</td><td>27</td></tr>
    <tr><td>i</td><td>49</td></tr>
    <tr><td>g</td><td>33</td></tr>
    <tr><td>n</td><td>38</td></tr>
    <tr><td>n</td><td>15</td></tr>
    <tr><td>d</td><td>25</td></tr>
    <tr><td>n</td><td>30</td></tr>
    <tr><td>e</td><td>39</td></tr>
    <tr><td>l</td><td>38</td></tr>
    <tr><td>k</td><td>10</td></tr>
    <tr><td>a</td><td>5</td></tr>
    <tr><td>a</td><td>22</td></tr>
    <tr><td>h</td><td>10</td></tr>
    <tr><td>g</td><td>3</td></tr>
    <tr><td>m</td><td>36</td></tr>
    <tr><td>m</td><td>40</td></tr>
    <tr><td>h</td><td>42</td></tr>
    <tr><td>j</td><td>3</td></tr>
    <tr><td>h</td><td>25</td></tr>
    <tr><td>k</td><td>0</td></tr>
    <tr><td>g</td><td>21</td></tr>
    <tr><td>n</td><td>24</td></tr>
    <tr><td>g</td><td>14</td></tr>
    <tr><td>f</td><td>2</td></tr>
    <tr><td>d</td><td>4</td></tr>
    <tr><td>e</td><td>13</td></tr>
    <tr><td>l</td><td>28</td></tr>
    <tr><td>e</td><td>42</td></tr>
    <tr><td>e</td><td>14</td></tr>
    <tr><td>j</td><td>41</td></tr>
    <tr><td>c</td><td>39</td></tr>
    <tr><td>g</td><td>33</td></tr>
    <tr><td>i</td><td>4</td></tr>
    <tr><td>d</td><td>37</td></tr>
    <tr><td>l</td><td>34</td></tr>
    <tr><td>g</td><td>36</td></tr>
    <tr><td>f</td><td>10</td></tr>
    <tr><td>a</td><td>2</td></tr>
    <tr><td>m</td><td>2</td></tr>
    <tr><td>a</td><td>33</td></tr>
    <tr><td>c</td><td>26</td></tr>
    <tr><td>n</td><td>11</td></tr>
    <tr><td>n</td><td>40</td></tr>
    <tr><td>h</td><td>21</td></tr>
      

  5.   

    <tr><td>e</td><td>10</td></tr>
    <tr><td>c</td><td>8</td></tr>
    <tr><td>a</td><td>20</td></tr>
    <tr><td>l</td><td>21</td></tr>
    <tr><td>i</td><td>9</td></tr>
    <tr><td>h</td><td>31</td></tr>
    <tr><td>e</td><td>8</td></tr>
    <tr><td>b</td><td>8</td></tr>
    <tr><td>h</td><td>5</td></tr>
    <tr><td>m</td><td>40</td></tr>
    <tr><td>e</td><td>33</td></tr>
    <tr><td>i</td><td>33</td></tr>
    <tr><td>d</td><td>40</td></tr>
    <tr><td>m</td><td>14</td></tr>
    <tr><td>c</td><td>26</td></tr>
    <tr><td>m</td><td>17</td></tr>
    <tr><td>f</td><td>35</td></tr>
    <tr><td>f</td><td>23</td></tr>
    <tr><td>n</td><td>5</td></tr>
    <tr><td>m</td><td>23</td></tr>
    <tr><td>j</td><td>10</td></tr>
    <tr><td>n</td><td>3</td></tr>
    <tr><td>j</td><td>10</td></tr>
    <tr><td>i</td><td>41</td></tr>
    <tr><td>l</td><td>23</td></tr>
    <tr><td>l</td><td>18</td></tr>
    <tr><td>b</td><td>20</td></tr>
    <tr><td>h</td><td>30</td></tr>
    <tr><td>g</td><td>16</td></tr>
    <tr><td>e</td><td>16</td></tr>
    <tr><td>j</td><td>37</td></tr>
    <tr><td>j</td><td>33</td></tr>
    <tr><td>f</td><td>18</td></tr>
    <tr><td>j</td><td>46</td></tr>
    <tr><td>m</td><td>15</td></tr>
    <tr><td>a</td><td>13</td></tr>
    <tr><td>f</td><td>16</td></tr>
    <tr><td>g</td><td>41</td></tr>
    <tr><td>i</td><td>11</td></tr>
    <tr><td>k</td><td>24</td></tr>
    <tr><td>c</td><td>9</td></tr>
    <tr><td>g</td><td>41</td></tr>
    <tr><td>k</td><td>30</td></tr>
    <tr><td>i</td><td>31</td></tr>
    <tr><td>j</td><td>40</td></tr>
    <tr><td>a</td><td>15</td></tr>
    <tr><td>h</td><td>14</td></tr>
    <tr><td>k</td><td>5</td></tr>
    <tr><td>i</td><td>47</td></tr>
    <tr><td>m</td><td>37</td></tr>
    <tr><td>m</td><td>27</td></tr>
    <tr><td>l</td><td>6</td></tr>
    <tr><td>l</td><td>0</td></tr>
    <tr><td>g</td><td>8</td></tr>
    <tr><td>g</td><td>43</td></tr>
    <tr><td>a</td><td>41</td></tr>
    <tr><td>m</td><td>39</td></tr>
    <tr><td>c</td><td>32</td></tr>
    <tr><td>l</td><td>31</td></tr>
    <tr><td>m</td><td>30</td></tr>
    <tr><td>b</td><td>3</td></tr>
    <tr><td>c</td><td>41</td></tr>
    <tr><td>j</td><td>22</td></tr>
    <tr><td>b</td><td>5</td></tr>
    <tr><td>b</td><td>0</td></tr>
    <tr><td>a</td><td>34</td></tr>
    <tr><td>f</td><td>1</td></tr>
    <tr><td>l</td><td>46</td></tr>
    <tr><td>h</td><td>21</td></tr>
    <tr><td>i</td><td>3</td></tr>
    <tr><td>d</td><td>15</td></tr>
    <tr><td>f</td><td>45</td></tr>
    <tr><td>d</td><td>30</td></tr>
    <tr><td>d</td><td>37</td></tr>
    <tr><td>c</td><td>2</td></tr>
    <tr><td>g</td><td>35</td></tr>
    <tr><td>c</td><td>6</td></tr>
    <tr><td>f</td><td>5</td></tr>
    <tr><td>j</td><td>0</td></tr>
    <tr><td>d</td><td>8</td></tr>
    <tr><td>d</td><td>42</td></tr>
    <tr><td>m</td><td>31</td></tr>
    <tr><td>d</td><td>24</td></tr>
    <tr><td>h</td><td>16</td></tr>
    <tr><td>f</td><td>12</td></tr>
    <tr><td>n</td><td>37</td></tr>
    <tr><td>j</td><td>49</td></tr>
    <tr><td>a</td><td>11</td></tr>
    <tr><td>c</td><td>20</td></tr>
    <tr><td>b</td><td>39</td></tr>
    <tr><td>f</td><td>49</td></tr>
    <tr><td>g</td><td>5</td></tr>
    <tr><td>m</td><td>22</td></tr>
    <tr><td>b</td><td>5</td></tr>
    <tr><td>e</td><td>22</td></tr>
    <tr><td>j</td><td>15</td></tr>
    <tr><td>k</td><td>28</td></tr>
    <tr><td>f</td><td>34</td></tr>
    <tr><td>k</td><td>8</td></tr>
    <tr><td>k</td><td>0</td></tr>
    <tr><td>b</td><td>22</td></tr>
    <tr><td>i</td><td>25</td></tr>
    <tr><td>k</td><td>15</td></tr>
    <tr><td>k</td><td>42</td></tr>
    <tr><td>g</td><td>49</td></tr>
    <tr><td>g</td><td>40</td></tr>
    <tr><td>g</td><td>42</td></tr>
    <tr><td>n</td><td>0</td></tr>
    <tr><td>k</td><td>30</td></tr>
    <tr><td>d</td><td>46</td></tr>
    <tr><td>l</td><td>20</td></tr>
    <tr><td>h</td><td>49</td></tr>
    <tr><td>b</td><td>23</td></tr>
    <tr><td>m</td><td>14</td></tr>
    <tr><td>l</td><td>2</td></tr>
    <tr><td>a</td><td>21</td></tr>
    <tr><td>g</td><td>29</td></tr>
    <tr><td>c</td><td>33</td></tr>
    <tr><td>b</td><td>41</td></tr>
    <tr><td>a</td><td>42</td></tr>
    <tr><td>n</td><td>16</td></tr>
    <tr><td>b</td><td>1</td></tr>
    <tr><td>n</td><td>7</td></tr>
    <tr><td>b</td><td>41</td></tr>
    <tr><td>k</td><td>1</td></tr>
    <tr><td>j</td><td>22</td></tr>
    <tr><td>m</td><td>22</td></tr>
    <tr><td>h</td><td>3</td></tr>
    <tr><td>h</td><td>37</td></tr>
    <tr><td>n</td><td>34</td></tr>
    <tr><td>a</td><td>27</td></tr>
    <tr><td>i</td><td>31</td></tr>
    <tr><td>b</td><td>12</td></tr>
    <tr><td>a</td><td>42</td></tr>
    <tr><td>d</td><td>29</td></tr>
    <tr><td>k</td><td>48</td></tr>
    <tr><td>d</td><td>38</td></tr>
    <tr><td>c</td><td>47</td></tr>
    <tr><td>m</td><td>38</td></tr>
    <tr><td>g</td><td>33</td></tr>
    <tr><td>e</td><td>4</td></tr>
    <tr><td>m</td><td>10</td></tr>
    <tr><td>g</td><td>49</td></tr>
    <tr><td>i</td><td>6</td></tr>
    <tr><td>a</td><td>12</td></tr>
    <tr><td>b</td><td>35</td></tr>
    <tr><td>m</td><td>4</td></tr>
    <tr><td>f</td><td>14</td></tr>
    <tr><td>j</td><td>34</td></tr>
    <tr><td>c</td><td>28</td></tr>
    <tr><td>h</td><td>35</td></tr>
    <tr><td>m</td><td>27</td></tr>
    <tr><td>e</td><td>24</td></tr>
    <tr><td>l</td><td>32</td></tr>
    <tr><td>g</td><td>16</td></tr>
    <tr><td>k</td><td>10</td></tr>
    <tr><td>m</td><td>21</td></tr>
    <tr><td>j</td><td>27</td></tr>
    <tr><td>f</td><td>26</td></tr>
    <tr><td>k</td><td>4</td></tr>
    <tr><td>c</td><td>36</td></tr>
    <tr><td>l</td><td>31</td></tr>
    <tr><td>g</td><td>17</td></tr>
    <tr><td>c</td><td>10</td></tr>
    <tr><td>n</td><td>41</td></tr>
    <tr><td>m</td><td>46</td></tr>
    <tr><td>f</td><td>9</td></tr>
    <tr><td>b</td><td>35</td></tr>
    <tr><td>l</td><td>18</td></tr>
    <tr><td>k</td><td>21</td></tr>
    <tr><td>k</td><td>40</td></tr>
    <tr><td>l</td><td>24</td></tr>
    <tr><td>n</td><td>26</td></tr>
    <tr><td>d</td><td>5</td></tr>
    <tr><td>g</td><td>7</td></tr>
    <tr><td>e</td><td>45</td></tr>
    <tr><td>f</td><td>7</td></tr>
    <tr><td>e</td><td>21</td></tr>
    <tr><td>d</td><td>20</td></tr>
    <tr><td>e</td><td>39</td></tr>
    <tr><td>d</td><td>19</td></tr>
    <tr><td>f</td><td>31</td></tr>
    <tr><td>h</td><td>6</td></tr>
    <tr><td>e</td><td>40</td></tr>
    <tr><td>a</td><td>44</td></tr>
    <tr><td>g</td><td>28</td></tr>
    <tr><td>g</td><td>25</td></tr>
    <tr><td>j</td><td>14</td></tr>
    <tr><td>d</td><td>24</td></tr>
    <tr><td>h</td><td>14</td></tr>
    <tr><td>h</td><td>11</td></tr>
    <tr><td>g</td><td>34</td></tr>
    <tr><td>b</td><td>15</td></tr>
    <tr><td>n</td><td>13</td></tr>
    </table>
    </body></html>
      

  6.   

    拜托,hbhbhbhbhb1021老大,发这么长 ^_^
      

  7.   

    如 hbhbhbhbhb1021(天外水火(我要多努力)) 2007-8-9 14:04:32 所言,改成如下,速度会快很多:function getSortFun(tdObj){
      var sortIsAsc=(rowSortImg.src.indexOf("up.gif")>-1);
      if("Number"==tdObj.columnContentType && sortIsAsc){
        return function (trObj1,trObj2) {return trObj1.innerHTML-trObj2.innerHTML;}
      }
      else if("Number"==tdObj.columnContentType && !sortIsAsc){
        return function (trObj1,trObj2) { return trObj2.innerHTML-trObj1.innerHTML;}
      }
      else if(sortIsAsc){
        return function (trObj1,trObj2) { return (trObj1.innerHTML.toUpperCase() > trObj2.innerHTML.toUpperCase())?1:-1;}
      }
      else {
        return function (trObj1,trObj2) { return (trObj1.innerHTML.toUpperCase() < trObj2.innerHTML.toUpperCase())?1:-1;}
      }
    }
      

  8.   

    mrshelly(Shelly) ( ) 信誉:100  2007-08-09 15:18:47  得分: 0  
    我的应该最高效....
    不过不考虑数据冗余...
    ----------
    sorry,没看到你的代码在哪里?
      
     
      

  9.   

    可以从三个方面优化:
    1、提取数据
       可以考虑使用正则匹配如:match(/<tr[\s\S]*?<\/tr>/ig);
    2、排序算法
       采用一些快速排序或希尔排序算法
    3、写入数据
       鉴于是表格,无法使用innerHTML,所以这部分可能暂时无法优化大家可以实践证明一下!
      

  10.   

    正则 vs indexOf
    compile过的 正则 vs indexOf
    排序什么的用内置函数
    少点if else
    少碟带几次
      

  11.   

    在hbhbhbhbhb1021的改进后,
    再把效率提高一点点(40%左右):
    <script language="javascript" srccccc="CommonJS_RowSort.js">
    var rowSortImg=document.createElement("img");
    function rowSortFun(tdObj){
    var d1=new Date();
      var currentColumnIndex=tdObj.cellIndex;
      if(rowSortImg.parentNode != tdObj){
        tdObj.appendChild(rowSortImg);
        rowSortImg.src="up.gif";
      }
      else if (rowSortImg.src.indexOf("down.gif")>-1){
        rowSortImg.src="up.gif";
      }
      else{
        rowSortImg.src="down.gif";
      }
      var currentTbody=tdObj.parentNode.parentNode;
      var rowsArray=new Array();
      for( var i=1;i<currentTbody.rows.length;i++){
        rowsArray[i-1]=new String(currentTbody.rows[i].cells[currentColumnIndex].innerHTML);
        rowsArray[i-1].trObj=currentTbody.rows[i];
      }
      rowsArray.sort(getSortFun(tdObj));
      for(var i=0;i<rowsArray.length;i++){
        currentTbody.appendChild(rowsArray[i].trObj);
      }
      alert("行数"+rowsArray.length+";所花毫秒数"+(new Date()-d1));
    }function getSortFun(tdObj){
      //return null;
      var sortIsAsc=(rowSortImg.src.indexOf("up.gif")>-1);
      if("Number"==tdObj.columnContentType && sortIsAsc){
        return function (trObj1,trObj2) {return trObj1-trObj2;}
      }
      else if("Number"==tdObj.columnContentType && !sortIsAsc){
        return function (trObj1,trObj2) { return trObj2-trObj1;}
      }
      else if(sortIsAsc){
        return function (trObj1,trObj2) { return (trObj1> trObj2)?1:-1;}
      }
      else {
        return function (trObj1,trObj2) { return (trObj1< trObj2)?1:-1;}
      }
    }</script>
      

  12.   

    我感觉还是有可以提高的空间,如果把sort中间的函数去掉,就可以看到还可以提高一些,也就是说sort函数执行了很多东西,会变得很慢,我的个人观点是
    sort虽然是内置的函数,但是我想他应该不知道要排序的数是什么样的,而数据结构中排序算法的快慢和数据是什么样是有很大的关系.如果sort会在排序之前先判断数据是什么样,那样就更说明sort不是最优的.也就是说sort应该不一定就是最优的函数,这个观点只是我自己的推理,没有实践过.
      

  13.   

    最后的代码里,500条记录时,sort所花的时间大约是总时间的15%.
      

  14.   

    sort()主要是慢在调用自定义函数上面...
    所以如果有办法不调用自定义函数的话有可能再提速一点...
    如果不考虑原始数据合法性的话...
    可以全部不用...
    逆序就reverse一下...
      

  15.   

    回复人:btbtd(转型(L/C)AMP) ( 一星(中级)) 信誉:100  2007-8-9 15:39:38  得分:0
    ?  一个高效率的算法一般是在已知结构上搞出来的...唉...俺只有在了解足够多内容的前提下,,,
    才有办法搞...
    ----------ding 他的。
      

  16.   

    按照chaircat的思路,
    再把效率提高百分之十几(如果排序的内容是Text的话):<script language="javascript" srccccc="CommonJS_RowSort.js">
    var rowSortImg=document.createElement("img");
    function rowSortFun(tdObj){
    var d1=new Date();
      var currentColumnIndex=tdObj.cellIndex;
      if(rowSortImg.parentNode != tdObj){
        tdObj.appendChild(rowSortImg);
        rowSortImg.src="up.gif";
      }
      else if (rowSortImg.src.indexOf("down.gif")>-1){
        rowSortImg.src="up.gif";
      }
      else{
        rowSortImg.src="down.gif";
      }
      var currentTbody=tdObj.parentNode.parentNode;
      var rowsArray=new Array();
      for( var i=1;i<currentTbody.rows.length;i++){
        rowsArray[i-1]=new String(currentTbody.rows[i].cells[currentColumnIndex].innerHTML.toUpperCase());
        rowsArray[i-1].trObj=currentTbody.rows[i];
      }
      rowsArray.sort(getSortFun(tdObj));
      var sortIsAsc=(rowSortImg.src.indexOf("up.gif")>-1);
      if(!sortIsAsc) rowsArray.reverse();
      for(var i=0;i<rowsArray.length;i++){
        currentTbody.appendChild(rowsArray[i].trObj);
      }
      alert("行数"+rowsArray.length+";所花毫秒数"+(new Date()-d1));
    }function getSortFun(tdObj){
      if("Number"==tdObj.columnContentType){
        return function (trObj1,trObj2) {return trObj1-trObj2;}
      }
      else return null;
    }
    </script>
      

  17.   

    哈哈,后面的方法是快了,数字慢的话可以偷懒放一个隐藏的td存放String.fromCharCode,如果
    是IE的话在td上面放个自定义属性应该也可以吧,把数字的排序消耗转换到页面初始化的时候
      

  18.   

    加自定义属性会变慢。
    以上几次效率提高的思路主要是减少对象的调用层次深度来达到的。还有一个循环可以减少调用层次深度,可以再快几毫秒:  for( var i=1;i<currentTbody.rows.length;i++){
        rowsArray[i-1]=new String(currentTbody.rows[i].cells[currentColumnIndex].innerHTML.toUpperCase());
        rowsArray[i-1].trObj=currentTbody.rows[i];
      }--->>>  var rows=currentTbody.rows;
      for( var i=1;i<rows.length;i++){
        rowsArray[i-1]=new String(rows[i].cells[currentColumnIndex].innerHTML.toUpperCase());
        rowsArray[i-1].trObj=rows[i];
      }
      

  19.   

    另外的一个思路,是第一次排完序后就记下该列排序后的rowsArray,第二次排序时就可以不用重新排序。
    还有一个值得改进的地方,是把排序后的对象表现出来,即以下这段:
      for(var i=0;i<rowsArray.length;i++){
        currentTbody.appendChild(rowsArray[i].trObj);
      }
      

  20.   

    测试了下,加属性会变快,和字符串是一样的速度了
    生成测试代码的文件,把table考过来,太长就不刷屏了
    <script language=javascript>
    var obj=document.getElementsByTagName("table")[0].childNodes[0]
    for(var i=0;i<obj.childNodes.length;i++)
    {
    obj.childNodes[i].childNodes[1].aaa="a"+obj.childNodes[i].childNodes[1].innerHTML
    }
    document.getElementById("textarea1").value=obj.outerHTML
    </script>
    下面是排序的代码
    <script language="javascript" srccccc="CommonJS_RowSort.js">function rowSortFun(tdObj,sortType){
    var d1=new Date();
      var currentColumnIndex=tdObj.cellIndex;
      var currentTbody=tdObj.parentNode.parentNode;
      var rowsArray=new Array();
      var objTd=null;
      for( var i=1;i<currentTbody.rows.length;i++){
       objTr=currentTbody.rows[i]
        //rowsArray[i-1]=new Array(objTr.cells[currentColumnIndex].innerHTML,objTr);
        //rowsArray[i-1]=new String(currentTbody.rows[i].cells[currentColumnIndex].innerHTML);
        //rowsArray[i-1].trObj=currentTbody.rows[i];
        rowsArray[i-1]=new String(currentTbody.rows[i].cells[currentColumnIndex].innerHTML.toUpperCase());
         rowsArray[i-1].trObj=currentTbody.rows[i];
      }
    rowsArray.sort();  for(var i=0;i<rowsArray.length;i++){
        currentTbody.appendChild(rowsArray[i].trObj);
        //currentTbody.appendChild(rowsArray[i][1]);
      }
      alert("行数"+rowsArray.length+";所花毫秒数"+(new Date()-d1));
    }</script>
      

  21.   

    不过测试的时候,发现快速排序要比sort函数慢,晕倒:)
      

  22.   


    按照“是第一次排完序后就记下该列排序后的rowsArray,第二次排序时就可以不用重新排序。”的思路:
    代码改成如下,在第二次排序时,时间再快40%左右.<script language="javascript" srccccc="CommonJS_RowSort.js">
    var rowSortImg=document.createElement("img");
    function rowSortFun(tdObj,needCache){
    var d1=new Date();
      if(needCache==null) needCache=true;//default value is true;
      var currentColumnIndex=tdObj.cellIndex;
      if(rowSortImg.parentNode != tdObj){
        tdObj.appendChild(rowSortImg);
        rowSortImg.src="up.gif";
      }
      else if (rowSortImg.src.indexOf("down.gif")>-1){
        rowSortImg.src="up.gif";
      }
      else{
        rowSortImg.src="down.gif";
      }
      var currentTbody=tdObj.parentNode.parentNode;
      var rowsArray=new Array();
      if(needCache && tdObj.rowsArray){
       rowsArray=tdObj.rowsArray;
      }
      else{
       var rows=currentTbody.rows;
       for( var i=1;i<rows.length;i++){
         rowsArray[i-1]=new String(rows[i].cells[currentColumnIndex].innerHTML.toUpperCase());
         rowsArray[i-1].trObj=rows[i];
       }
       rowsArray.sort(getSortFun(tdObj));
       if(needCache) tdObj.rowsArray=rowsArray;
      }
      var sortIsAsc=(rowSortImg.src.indexOf("up.gif")>-1);
      if(!sortIsAsc) rowsArray.reverse();
      for(var i=0;i<rowsArray.length;i++){
        currentTbody.appendChild(rowsArray[i].trObj);
      }
      if(!sortIsAsc) rowsArray.reverse();
    alert("行数"+rowsArray.length+";所花毫秒数"+(new Date()-d1));
    }function getSortFun(tdObj){
      if("Number"==tdObj.columnContentType){
        return function (trObj1,trObj2) {return trObj1-trObj2;}
      }
      else return null;
    }
    </script>
      

  23.   

    hbhbhbhbhb1021(天外水火(我要多努力)) ( ) 信誉:100  2007-08-10 10:53:45  得分: 0  
    测试了下,加属性会变快,和字符串是一样的速度了
    生成测试代码的文件,把table考过来,太长就不刷屏了
    -------------
    你加的属性没有派上用场啊
    整度一样的原因是你没有传sortFun进去,它就按字符来排序,11会小于5
      

  24.   

    在ff下有个bug:sort()里不能传null进去.
    作了一下相应的改动:
    <script language="javascript" srccccc="CommonJS_RowSort.js">
    var rowSortImg=document.createElement("img");
    function rowSortFun(tdObj,needCache){
    var d1=new Date();
      if(needCache==null) needCache=true;//default value is true;
      var currentColumnIndex=tdObj.cellIndex;
      if(rowSortImg.parentNode != tdObj){
        tdObj.appendChild(rowSortImg);
        rowSortImg.src="up.gif";
      }
      else if (rowSortImg.src.indexOf("down.gif")>-1){
        rowSortImg.src="up.gif";
      }
      else{
        rowSortImg.src="down.gif";
      }
      var currentTbody=tdObj.parentNode.parentNode;
      var rowsArray=new Array();
      if(needCache && tdObj.rowsArray){
       rowsArray=tdObj.rowsArray;
      }
      else{
       var rows=currentTbody.rows;
       for( var i=1;i<rows.length;i++){
         rowsArray[i-1]=new String(rows[i].cells[currentColumnIndex].innerHTML.toUpperCase());
         rowsArray[i-1].trObj=rows[i];
       }
       var fun=getSortFun(tdObj);
       if(getSortFun(tdObj)) rowsArray.sort(fun);
       else rowsArray.sort();
       if(needCache) tdObj.rowsArray=rowsArray;
      }
      var sortIsAsc=(rowSortImg.src.indexOf("up.gif")>-1);
      if(!sortIsAsc) rowsArray.reverse();
      for(var i=0;i<rowsArray.length;i++){
        currentTbody.appendChild(rowsArray[i].trObj);
      }
      if(!sortIsAsc) rowsArray.reverse();
    alert("行数"+rowsArray.length+";所花毫秒数"+(new Date()-d1));
    }function getSortFun(tdObj){
      if("Number"==tdObj.columnContentType){
        return function (trObj1,trObj2) {return trObj1-trObj2;}
      }
      else return null;
    }
    </script>
      

  25.   

    开了好几个测试的,生成数组的那句话传错了.
    if(sortType=="numberTd")
        rowsArray[i-1]=new String(currentTbody.rows[i].cells[currentColumnIndex].aaa);
    else
        rowsArray[i-1]=new String(currentTbody.rows[i].cells[currentColumnIndex].innerHTML.toUpperCase());后面的那个排序上面的是还是有问题的
    不过按位数生成应该可以做到啊上面那个测试用例,如果用Ultraedit可以在替换的时候把正则钩上,然后把aaa="a^(?^)"替换成aaa="a0^1"这样位数就可以做到一样了.看起来效率还可以,比innerHTML要快一些,不过这是把时间转到初始化上了
      

  26.   

    <tr><td>a</td><td>23</td></tr>
    <tr><td>b</td><td>17</td></tr>
    <tr><td>i</td><td>49</td></tr>
    <tr><td>l</td><td>22</td></tr>
    <tr><td>g</td><td>25</td></tr>
    <tr>                     </tr>
    <tr><td>l</td><td>8</td></tr>
    <tr><td>f</td><td>33</td></tr>
    <tr><td>j</td><td>41</td></tr>
    <tr><td>f</td><td>12</td></tr>
    <tr><td>a</td><td>6</td></tr>
    <tr><td>i</td><td>11</td></tr>
    <tr><td>k</td><td>0</td></tr>
    <tr><td>j</td><td>19</td></tr>
    <tr><td>b</td><td>20</td></tr>
    <tr><td>n</td><td>7</td></tr>
    <tr><td>k</td><td>38</td></tr>
    <tr><td>e</td><td>13</td></tr>
    <tr><td>j</td><td>10</td></tr>
    <tr><td>h</td><td>18</td></tr>
    <tr><td>f</td><td>7</td></tr>
    <tr><td>a</td><td>10</td></tr>
    <tr><td>m</td><td>16</td></tr>
    <tr><td>h</td><td>5</td></tr>
    <tr><td>h</td><td>18</td></tr>
    <tr><td>j</td><td>23</td></tr>
    <tr><td>b</td><td>22</td></tr>
    <tr><td>n</td><td>10</td></tr>
    <tr><td>m</td><td>0</td></tr>
    <tr><td>h</td><td>3</td></tr>
    <tr><td>m</td><td>24</td></tr>
    <tr><td>n</td><td>43</td></tr>
    <tr><td>a</td><td>25</td></tr>
    <tr><td>j</td><td>29</td></tr>
    <tr><td>n</td><td>4</td></tr>
    <tr><td>m</td><td>29</td></tr>
    <tr><td>e</td><td>42</td></tr>
    <tr><td>f</td><td>9</td></tr>
    <tr><td>g</td><td>18</td></tr>
    <tr><td>m</td><td>12</td></tr>
    <tr><td>i</td><td>37</td></tr>
    <tr><td>a</td><td>36</td></tr>
    <tr><td>c</td><td>16</td></tr>
    <tr><td>h</td><td>37</td></tr>
    <tr><td>e</td><td>8</td></tr>
    <tr><td>m</td><td>26</td></tr>
    <tr><td>g</td><td>43</td></tr>
    <tr><td>n</td><td>30</td></tr>
    <tr><td>h</td><td>40</td></tr>
    <tr><td>m</td><td>6</td></tr>
    <tr><td>k</td><td>46</td></tr>
    <tr><td>i</td><td>17</td></tr>
    <tr><td>a</td><td>30</td></tr>
    <tr><td>c</td><td>32</td></tr>
    <tr><td>k</td><td>26</td></tr>
    <tr><td>n</td><td>33</td></tr>
    <tr><td>n</td><td>39</td></tr>
    <tr><td>i</td><td>40</td></tr>
    <tr><td>e</td><td>33</td></tr>
    <tr><td>j</td><td>31</td></tr>
    <tr><td>e</td><td>39</td></tr>
    <tr><td>g</td><td>7</td></tr>
    <tr><td>f</td><td>3</td></tr>
    <tr><td>d</td><td>20</td></tr>
    <tr><td>f</td><td>7</td></tr>
    <tr><td>h</td><td>8</td></tr>
    <tr><td>a</td><td>29</td></tr>
    <tr><td>j</td><td>30</td></tr>
    <tr><td>l</td><td>8</td></tr>
    <tr><td>a</td><td>46</td></tr>
    <tr><td>b</td><td>34</td></tr>
    <tr><td>i</td><td>25</td></tr>
    <tr><td>e</td><td>3</td></tr>
    <tr><td>l</td><td>39</td></tr>
    <tr><td>i</td><td>4</td></tr>
    <tr><td>l</td><td>22</td></tr>
    <tr><td>l</td><td>31</td></tr>
    <tr><td>f</td><td>4</td></tr>
    <tr><td>k</td><td>38</td></tr>
    <tr><td>m</td><td>48</td></tr>
    <tr><td>a</td><td>43</td></tr>
    <tr><td>a</td><td>47</td></tr>
    <tr><td>c</td><td>36</td></tr>
    <tr><td>l</td><td>2</td></tr>
    <tr><td>c</td><td>9</td></tr>
    <tr><td>f</td><td>35</td></tr>
    <tr><td>f</td><td>14</td></tr>
    <tr><td>m</td><td>15</td></tr>
    <tr><td>n</td><td>39</td></tr>
    <tr><td>n</td><td>19</td></tr>
    <tr><td>f</td><td>45</td></tr>
    <tr><td>a</td><td>19</td></tr>
    <tr><td>d</td><td>27</td></tr>
    <tr><td>i</td><td>13</td></tr>
    <tr><td>a</td><td>27</td></tr>
    <tr><td>i</td><td>49</td></tr>
    <tr><td>g</td><td>33</td></tr>
    <tr><td>n</td><td>38</td></tr>
    <tr><td>n</td><td>15</td></tr>
    <tr><td>d</td><td>25</td></tr>
    <tr><td>n</td><td>30</td></tr>
    <tr><td>e</td><td>39</td></tr>
    <tr><td>l</td><td>38</td></tr>
    <tr><td>k</td><td>10</td></tr>
    <tr><td>a</td><td>5</td></tr>
    <tr><td>a</td><td>22</td></tr>
    <tr><td>h</td><td>10</td></tr>
    <tr><td>g</td><td>3</td></tr>
    <tr><td>m</td><td>36</td></tr>
    <tr><td>m</td><td>40</td></tr>
    <tr><td>h</td><td>42</td></tr>
    <tr><td>j</td><td>3</td></tr>
    <tr><td>h</td><td>25</td></tr>
    <tr><td>k</td><td>0</td></tr>
    <tr><td>g</td><td>21</td></tr>
    <tr><td>n</td><td>24</td></tr>
    <tr><td>g</td><td>14</td></tr>
    <tr><td>f</td><td>2</td></tr>
    <tr><td>d</td><td>4</td></tr>
    <tr><td>e</td><td>13</td></tr>
    <tr><td>l</td><td>28</td></tr>
    <tr><td>e</td><td>42</td></tr>
    <tr><td>e</td><td>14</td></tr>
    <tr><td>j</td><td>41</td></tr>
    <tr><td>c</td><td>39</td></tr>
    <tr><td>g</td><td>33</td></tr>
    <tr><td>i</td><td>4</td></tr>
    <tr><td>d</td><td>37</td></tr>
    <tr><td>l</td><td>34</td></tr>
    <tr><td>g</td><td>36</td></tr>
    <tr><td>f</td><td>10</td></tr>
    <tr><td>a</td><td>2</td></tr>
    <tr><td>m</td><td>2</td></tr>
    <tr><td>a</td><td>33</td></tr>
    <tr><td>c</td><td>26</td></tr>
    <tr><td>n</td><td>11</td></tr>
    <tr><td>n</td><td>40</td></tr>
    <tr><td>h</td><td>21</td></tr>
      

  27.   

    汗一个...
    之前想的sort()不用自定义函数没有考虑到数字11会比5小...
    我再研究下怎样比较数字...
      

  28.   

    用这个比较数字的话...
    function getSortFun_cc(tdObj){
      if("Number"==tdObj.columnContentType){
        return function (trObj1,trObj2) {
    if(trObj1.length>trObj2.length)
    return 1;
    else if(trObj1.length<trObj2.length)
    return -1;
    else
    return trObj1-trObj2;
    }
      }
      else return null;
    }用最新的"版本"设置needCache=false,同一组数据,5K个1~1000的随机数...
    计时如下...
    **用getSortFun_cc():
    5969 6000
    5657 5500
    5875 5531
    5797 5735
    **用原先的版本:
    6250 6063
    6047 6141
    6031 6125
    5984 6437好像快不了很多...
    不过我想如果数字之间相差比较远的话会好一点...
      

  29.   

    结贴总结:
    1。arrayObj.reverse()几乎不花时间
    2。排序函数里要尽量减少对象的调用层次
    3。对象数组按对象某个属性排序的话,可以先转化成一个String数组(其值为排序的属性),把对象附在String上,排完序后,再把按序取出String所附的对象。这样能排序速度快很多。