2010-11-28 28 views
18

Safari 5'in (Windows 7) neden nesne dizilerini sıralayamadığını bilen var mı?Neden Safari 5 bir dizi nesne sıralamıyor?

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); 

konsol sonucu Bu FF ve IE çalışıyor

1,3,2 
1,2,3 

olmalı ama Safari verir:

1,3,2 
1,3,2 

cevap

47

Karşılaştırma işlevi yanlıştır:

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

Fonksiyonun geri gelmesi bekleniyor < b, a = b veya a> b'ye bağlı olarak negatif, sıfır veya pozitif. İşleviniz, a> b'yi belirten bir boole döndürür. Şunun gibi bir şey deneyin:

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

Çok teşekkürler! Bazı tarayıcıların zarif ve diğerlerinin katı olduğu gerçekten karışık bir nimet ... – Marc

+0

@Marc: Aslında bu küçük sayı grubuyla şanslı olduğunuzu düşünüyorum; orijinal işleviniz sadece 3 olası cevaptan 2 geri döndü, bu yüzden IE/FF'de daha büyük bir setle başarısız olurdu. – casablanca

+9

Chrome ve Firefox doğru ya da yanlış kabul eder, Safari'de bulunmaz. –

İlgili konular