两次排序可以实现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>
<!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>
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"))
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"));
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" 后面, 糗大了.
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"));
这样应该也行
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"));
这样应该也行