作者gg90052 (Teddy)
看板Flash
標題[問題] 關於Flash的排序
時間Thu May 7 03:20:22 2009
function sort(array:Array):Object
{
array.sort(16);
return array.pop();
}
我想要尋找出陣列裡面最大的數字,請問這樣寫有錯嗎?
因為我sort出來的結果很奇怪
sort前:0,8,36,0,34,0,39,86,
sort後:0,0,34,36,39,8,86
而我預期的結果應該是0,0,8,34,36,39,86
用sort(16)他會先比較十位數字,再比個位數字
但是如果沒有十位數字的話,他會把那個個位數當成十位數字來比
有辦法做單純的數字排序嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.160.180.6
1F:→ edsger:var sortedArray:Array = array.sort(16); 05/07 04:57
2F:→ edsger:return sortedArray.pop(); 05/07 04:58
3F:→ edsger:有使用16 (Array.NUMERIC)就是數字排序而不是字串排序了 05/07 05:00
4F:→ edsger:只不過sort不會改變目標陣列,而是回傳新的排序後振烈 05/07 05:01
※ 編輯: gg90052 來自: 118.160.180.6 (05/07 09:39)
6F:推 easy1:順便問一下 我在使用Array.NUMERIC 排序的時候 如果陣列中 05/07 19:31
7F:推 easy1:有 undefined 的值 它會給我Error 是不是只能給它一個自訂 05/07 19:33
8F:→ easy1:排序的function 讓它忽略 undefined 05/07 19:33
10F:→ cjcat2266:另外,sort()會改變陣列本身 05/07 20:06
11F:→ cjcat2266:回傳的東西會依情況而定,同樣請見上面的連結 05/07 20:06
12F:→ edsger:的確sort會改變目標陣列的值 前面誤導各位請多包含 m(_ _)m 05/07 20:23
13F:→ edsger:gg90052如果還是不行的話 檢查一下 1.指定陣列內容物 05/07 20:25
14F:→ edsger:2.進行排序 3.取得排序後結果 這幾個時間點的陣列內容 05/07 20:26
15F:→ edsger:或是提供這些部分的完整程式碼 會比較有足夠的線索來抓 05/07 20:27
16F:→ gg90052:感謝大家幫忙.....最後發現原來是我自己腦殘.... 05/08 01:40
17F:→ gg90052:我是送入的一串數字split,放進陣列的時候忘記轉成數字了. 05/08 01:41