2013-02-11 42 views
0

我希望能夠根據字符串中的第一個字對JavaScript中的對象數組進行排序。目前我正在使用的排序功能使用字符串中的所有單詞。根據第一個字排序對象數組

JSON數據:

"awds": [ 
    {"awd":"adobe edge award"}, 
    {"awd":"besty"}, 
    {"awd":"c award"}, 
    {"awd":"awwward award"}, 
    {"awd":"desk award"}, 
    {"awd":"adobe edge award"}, 
    {"awd":"creative edge award"}, 
    {"awd":"snoogle edge award"}, 
    {"awd":"scuba edge award"}, 
    {"awd":"xidoe edge award"} 
] 

JavaScript的:

var compareNames = function(a, b) { 
    var nameA = a.awd.toLowerCase(); 
    var nameB = b.awd.toLowerCase(); 
    if (nameA > nameB) { return 1; } 
    return 0; 
}; 

電流輸出:

adobe edge award 
besty 
c award 
awwward award 
desk award 
adobe edge award 
creative edge award 
snoogle edge award 
scuba edge award 
xidoe edge award 

所需的輸出:

adobe edge award 
adobe edge award 
awwward award 
c award 
creative edge award 
scuba edge award 
snoogle edge award 
xidoe edge award 
+0

它不會在所有的工作! – gdoron 2013-02-11 17:39:00

+0

如何使用'substring'函數? – codemonkey 2013-02-11 17:40:09

回答

1
var o = [ 
    {"awd":"adobe edge award"}, 
    {"awd":"besty"}, 
    {"awd":"c award"}, 
    {"awd":"awwward award"}, 
    {"awd":"desk award"}, 
    {"awd":"adobe edge award"}, 
    {"awd":"creative edge award"}, 
    {"awd":"snoogle edge award"}, 
    {"awd":"scuba edge award"}, 
    {"awd":"xidoe edge award"} 
]; 

o.sort(function(a, b) { 
    var nameA = a.awd.toLowerCase(); 
    var nameB = b.awd.toLowerCase(); 
    if(nameA === nameB) return 0; 
    return nameA > nameB ? 1 : -1; 
}); 

console.log(o); 

Demo

+0

這工作。謝謝。 – vsiege 2013-02-11 18:01:09

+0

標記爲答案,如果它幫助你。 – Jashwant 2013-02-11 18:54:02

1
+0

這就是我正在使用的和輸出不是我想要的。 content.awds.sort(compareNames); – vsiege 2013-02-11 17:48:32

+0

Rigth,同時給出的另一個答案指出你的錯誤。您不僅需要返回1或0,而且還要返回-1。 (0等於) – marekful 2013-02-11 17:52:03

+0

謝謝大家的幫助。 – vsiege 2013-02-11 18:04:55

0

如果返回-1時的第一個項目是不是比二線

var compareNames = function(a, b) {  
    var nameA = a.awd.toLowerCase(); 
    var nameB = b.awd.toLowerCase(); 
    if(nameA==nameB) return 0; 
    return (nameA > nameB)? 1:-1; 
};