两次排序可以实现L@_@K
<!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>
    <title> new document </title>
    <meta name="generator" content="editplus" />
    <meta name="author" content="Gao YiXiang" />
    <meta name="email" content="[email protected]" />
    <meta name="keywords" content="javascript dhtml dom" />
    <meta name="description" content="I love web development." />
</head>
<body>
    <script type="text/javascript">
    <!--
function sortByLength(a, b)
{
    if (a.length>b.length)
    {
        return 1;
    }
    else if (a.length==b.length)
    {
        return 0;
    }
    else if (a.length<b.length)
    {
        return -1;
    }
}
var a = new Array("b","c","a","b¦c","a¦b");
a.sort();
a.sort(sortByLength);
alert(a.join("\n"));
    //-->
    </script>
</body>
</html>

解决方案 »

  1.   

    var arr = ["b", "c", "a", "", "b|c", "a|b"];
    arr.sort(function(a, b) {
    if (a.length == b.length) {
    return a.charCodeAt(0)-b.charCodeAt(0);
    }
    return a.length - b.length;
    });
    alert(arr.join("\n"))
      

  2.   

    看了1楼的贴,才发现我上面的那是错的.
    var arr = ["b", "c", "a", , "b|c", "a|b"];
    arr.sort();
    arr.sort(function(a, b) { return a.length - b.length; });
    alert(arr.join("\n"));
      

  3.   

    to wcwtitxu2楼写法没啥问题呀?一个排序函数就搞定了,挺好滴!输出结果完全符合lz滴要求!
      

  4.   

    var arr = ["b", "c", "ac","ab", , "b|c", "a|b"];
    arr.sort(function(a, b) {
        if (a.length == b.length) {
            return a.charCodeAt(0)-b.charCodeAt(0);
        }
        return a.length - b.length;
    });
    alert(arr.join("\n"));这样就不行了. 排了后 "ab" 还在 "ac" 后面, 糗大了.
      

  5.   

    改了下:var arr = ["b", "c", "ac","ab", , "b|c", "a|b","ba"];
    arr.sort(function(a, b) {
        if (a.length == b.length) {
           for(i=0;i<a.length;i++)
            {
                 if(a.charCodeAt(i)==b.charCodeAt(i))
                  continue;
                  else
                  return a.charCodeAt(i)-b.charCodeAt(i);
            }
        }
        return a.length - b.length;
    });
    alert(arr.join("\n"));
    这样应该也行
      

  6.   

    改了下:var arr = ["b", "c", "ac","ab", , "b|c", "a|b","ba"]; 
    arr.sort(function(a, b) { 
        if (a.length == b.length) { 
          for(i=0;i <a.length;i++) 
            { 
                if(a.charCodeAt(i)==b.charCodeAt(i)) 
                  continue; 
                  else 
                  return a.charCodeAt(i)-b.charCodeAt(i); 
            } 
        } 
        return a.length - b.length; 
    }); 
    alert(arr.join("\n")); 
    这样应该也行