2013-03-03 94 views
1

考慮以下幾點:如何使用JavaScript按字段的值對對象數組進行排序?

var array = [{"name":"zoe", "hotdogs":5},{"name":"april", "hotdogs":5},{"name":"ryan", "hot dogs":8}] 

我如何數組的元素按名稱使用JavaScript進行排序?

var array = [{"name":"april", "hotdogs":5},{"name":"ryan", "hotdogs":8},{"name":"zoe", "hotdogs":5}] 

有沒有辦法應用一些函數來排序對象?有幫助性能的輔助庫嗎?

我試過如下:

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

但它似乎已生成的數組沒有影響時,我嘗試任何打印出來。

+2

嘗試'回報(a.name> b.name) - (b.name> a.name)'。 '.sort'將'0'(AKA'+ false')解釋爲「等於」 – 2013-03-03 17:30:30

+0

@Jan,就是這樣做的。 – Setsuna 2013-03-03 17:32:50

+0

@JanDvorak是正確的http://jsfiddle.net/avWXu/ – 2013-03-03 17:33:35

回答

1

使用.localeCompare()

array.sort(function(a, b) { 
    return a.name.localeCompare(b.name) 
}); 
+0

這是一個可怕的答案。從鏈接到的文檔:*使用的語言環境和排序順序完全取決於實現*。大。所以我在服務器上進行排序,並在每臺用戶的機器上進行排序。不用了,謝謝 – gman 2016-11-23 08:23:33

0

函數應該返回整數,像C STRCMP,這樣做:

if a.name > b.name { 
    return 1; 
} else if (a.name == b.name) { 
    return 0; 
} 
return -1 
+0

'「zoe」 - 「四月」=> NaN' – 2013-03-03 17:32:43

相關問題