2010-10-07 214 views
27

創建像這樣的多暗數組後,我該如何對它進行排序?Javascript:對多維數組進行排序

假設「標記」已定義:

var location = []; 
for (var i = 0; i < markers.length; i++) { 
    location[i] = {}; 
    location[i]["distance"] = "5"; 
    location[i]["name"] = "foo"; 
    location[i]["detail"] = "something"; 
} 

對於上面的例子,我需要「距離」來排序。 我已經看到了有關排序數組和多維數組的其他問題,但沒有一個適用於此。

回答

44
location.sort(function(a,b) { 

    // assuming distance is always a valid integer 
    return parseInt(a.distance,10) - parseInt(b.distance,10); 

}); 

JavaScript的array.sort方法有一個可選參數,該參數爲自定義比較函數引用。返回值分別爲>0意思是b第一,0意思是ab相等,而<0意思是a第一。

+0

這工作,雖然「距離」是一個小數(如「964.543」),所以必須刪除parseInt,否則排序不準確的小數點後。 – Jeff 2010-10-08 01:00:12

+5

@Deca'parseFloat(a.distance)'在這種情況下是適當的。 – lincolnk 2010-10-08 01:35:00

+1

啊!謝謝林肯! – Jeff 2010-10-13 17:11:53

10

你試過嗎?

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

這個伎倆,謝謝。 – Jeff 2010-10-08 00:42:33

1

到目前爲止應該工作發佈兩款排序功能,但你的主要問題將是使用location爲變量,因爲它已經是系統定義。

+3

+1好點。但它不是一個真正的答案...... :)你應該評論其中的一個。 – galambalazs 2010-10-07 22:13:49

+0

「location」不是實際的var名稱,所以我們很好。 – Jeff 2010-10-07 22:47:29

相關問題