2010-11-28 121 views
18

任何人都知道爲什麼Safari 5(Windows 7)無法對對象數組進行排序?爲什麼Safari 5不能排序對象數組?

var arr = [{a:1},{a:3},{a:2}]; 
console.log(arr[0].a+','+arr[1].a+','+arr[2].a); 
arr.sort(function(a,b){return a.a > b.a;}); 
console.log(arr[0].a+','+arr[1].a+','+arr[2].a); 

控制檯的結果應該是

1,3,2 
1,2,3 

這在FF和IE瀏覽器工作正常,但Safari瀏覽器返回:

1,3,2 
1,3,2 

回答

47

你比較函數是錯誤的:

function(a,b){return a.a > b.a;} 

該功能預計會返回負數,零或正值取決於是否a < b,a = b或a> b。你的函數返回一個布爾值,指示a> b。嘗試像這樣:

function(a,b){return a.a - b.a;} 
+0

非常感謝!這真是一個混合的祝福,一些瀏覽器是親切的,而其他人是剛性的... – Marc 2010-11-29 18:44:05