javascript 數組排序發現一個我原來不知道的事情:
test1.html
<
html
>
<
body
>
<
script
type
="text/javascript"
>
var
y
=
new
Array(
10
,
30000
,
12
);
y.sort();
alert(y);
</
script
>
</
body
>
</
html
>
排序結果正確(按我自認為從小到大的順序,暫且把這種觀點認為是正確的)。
test2.html
<
html
>
<
body
>
<
script
type
="text/javascript"
>
var
y
=
new
Array(
36000
,
500
,
10100
);
y.sort();
alert(y);
</
script
>
</
body
>
</
html
>
排序結果不正確。
當時就納悶了,隨后發現他是按照首字母來排序的。我服了javascript。
隨后查看手冊解釋如下:
sort 方法
返回一個元素已經進行了排序的 Array 對象。

arrayobj.sort(sortfunction)

參數
arrayObj

必選項。任意 Array 對象。

sortFunction

可選項。是用來確定元素順序的函數的名稱。如果這個參數被省略,那么元素將按照 ASCII 字符順序進行升序排列。
唉,錯怪javascript了,本來人家是說清楚了的。只是我沒有看手冊,覺得java程序里就直接用sort對int 數組排序。沒有帶什么參數的。
終歸一句話,我沒有仔細看書啊。
隨后加入:
test2.html
<
html
>
<
body
>
<
script
type
="text/javascript"
>
function
AscSort(x, y)

{
return
x
==
y
?
0
: (x
>
y
?
1
:
-
1
);
}
function
DescSort(x, y)

{
return
x
==
y
?
0
: (x
>
y
?
-
1
:
1
);
}
var
y
=
new
Array(
36000
,
500
,
10100
);
y.sort(AscSort);
alert(y);
</
script
>
</
body
>
</
html
>
便得到我所謂的正確排序了。呵呵。
于是懷疑java中也不是我想像中的那么個用法,馬上用記事本寫了個程序,我一般家里電腦不裝IDE ,基本不是用來編程的。所以也沒有自動提示之類的。
import
java.util.
*
;
public
class
test

{
public
static
void
main(String []args)

{

int
[] x
=
new
int
[]
{
1
,
2
,
3
,
9
,
4
}
;
Arrays.sort(x,
0
,x.length);
for
(
int
i
=
0
;i
<
x.length;i
++
)

{
System.out.println(x[i]);
}
}
}
順利通過,不過通過之前還是發生過小錯誤,那就是直接用了x.sort.唉,看來我還是應該反復復習老知識啊。自從轉行寫JSP 后(而其中我基本使用JSTL不寫一行<%%>所以知識都忘了些。)
特此總結,記錄。希望日后能仔細點。
posted on 2007-07-01 03:16
-274°C 閱讀(3600)
評論(4) 編輯 收藏 所屬分類:
web前端