2011-06-16 67 views
2

我有一個對象數組,我想知道是否可以通過對象中的屬性對數組進行排序?這裏是我的意思是一個樣本:有沒有一種方法來基於javascript中的對象中的內容對對象數組進行排序?

for (var i = 0; i < response.data.length; i++) { 
    person[i] = { 
     "name":response.data[i].name, 
     "phone":response.data[i].phone 
    }; 
    person[i].name.sort(); 
} 

我想按對象名稱排序數組。

+0

'person [i] .name.sort()'只有在'response.data [i] .name'是一個數組時纔會起作用。然後它只會分類一個人的名字。看看http://stackoverflow.com/search?q=javascript+sort+array+of+objects – 2011-06-16 12:24:03

+0

[排序對象數組]的可能重複(http://stackoverflow.com/questions/5876424/sort-對象數組) – 2011-06-16 12:26:57

回答

8
person.sort(function(a, b) { 
    if (a.name < b.name) return -1; 
    if (a.name > b.name) return 1; 
    return 0; 
}); 

sort需要一個比較器功能作爲一個可選參數。

0

當然。數組對象有一個排序函數,允許您傳入函數以確定如何比較對象。

//Passes in A and B, which are the objects in your array. 
function sortName(a, b) 
{ 
    return a.name <= b.name ? -1 : 1 
      //return integer 
      //negative number a is less than b 
      //positive number b is less than a 
      //zero a and b are equal 
      //(My function doesn't ever return zero) 
} 

person.sort(sortName); 
+0

雖然它應該能夠工作,但是對於那一天我的挑剔是你的註釋與你的代碼不匹配,因爲//零a和b是相等的將永遠不會實際發生。 – Wiseguy 2011-06-16 12:35:14

+0

這是關於比較器功能需求的更多指導。教一個男人給魚打一個東西。我將編輯以澄清代碼。 – MillsJROSS 2011-06-16 12:38:01

+0

如果這是需要的,那麼爲什麼不這樣做呢? :-)既然你在這裏排序,它應該仍然正常工作。但是,如果您使用相同的比較回調來執行其他操作,則該操作可能會產生不正確的結果,因爲回調沒有達到預期的效果。 – Wiseguy 2011-06-16 12:40:39

相關問題