2016-07-25 203 views
0

我需要使用underscore.js以升序對數組進行排序。它幾乎爲我工作,但當 排序名稱包含大寫字母時,大寫字母名稱排序順序排在第一位。你能幫我解決這個問題嗎? Tahank你。使用underscore.js對數組升序排序

嘗試以下

connectors = [ 
    { 
    "name": "ajax" 
    }, 
    { 
    "name": "jquery" 
    }, 
    { 
    "name": "FGJDE" 
    } 
] 
sorted = _.sortBy(connectors, 'name'); 

預計輸出

connectors = [ 
    { 
    "name": "ajax" 
    }, 
    { 
    "name": "FGJDE" 
    }, 
    { 
    "name": "jquery" 
    } 
] 

我得到錯誤的排序像下面

connectors = [ 
    { 
    "name": "FGJDE" 
    }, 
    { 
    "name": "ajax" 
    }, 
    { 
    "name": "jquery" 
    } 
] 
+2

看一看有關[在下劃線不區分大小寫的排序(HTTP這樣的疑問://計算器。 COM /問題/ 25873635 /下劃線-JS-不區分大小寫的分選)。 –

+1

'_.sortBy(connectors,o => o.name.toLowerCase());' – Tushar

回答

2

你可以這樣做

connectors = [{ 
    "name": "ajax" 
}, { 
    "name": "jquery" 
}, { 
    "name": "FGJDE" 
}] 
sorted = _.sortBy(connectors, function (text) { return text.name.toLowerCase(); }); 
console.log(sorted); 

這裏是jsFiddle

1

爲什麼不使用String#localeCompare呢?

var connectors = [{ "name": "ajax" }, { "name": "jquery" }, { "name": "FGJDE" }]; 
 

 
connectors.sort(function (a, b) { 
 
    return a.name.localeCompare(b.name); 
 
}); 
 

 
console.log(connectors);