2016-05-04 6 views
0

Ich habe ein Array. Ich muss dieses Array mit lodash sortieren. Ich habe _.sortBy verwendet, aber es ist nicht Sortierung Capital String, warum?Warum funktioniert _sortBy nicht mit Großbuchstaben?

Hier ist mein Code: https://jsfiddle.net/2q9cdjug/

var arr = [ 
    { name: "pq" }, 
    { name: "ab" }, 
    { name: "QE" } 
] 
var a = _.sortBy(arr, 'name'); 
console.log(a) 
+0

Mögliche Duplikat [Sortierung ein Array von JavaScript-Objekte] sein sollte (http://stackoverflow.com/questions/979256/sorting-an-array- of-javascript-objects) – Patrick2607

+0

Mögliches Duplikat von [ Underscore.js Insensitive Sortierung] (http://stackoverflow.com/questions/25873635/underscore-js-case-insensitive-sorting) – Aides

Antwort

1

Aber es ist Hauptstadt String nicht Sortierung warum?

Da 'a' !== 'A'

Sie Callback-Funktion nutzen können, so können Sie sie sortieren, indem Sie auf gleiche Fälle Umwandlung entweder toLowerCase() oder toUpperCase()

a = _.sortBy(arr, function (x) { 
    return x.name.toLowerCase(); 
}); 

DEMO

0

Dies ist wegen der ascii Tabelle der Zeichen

bearbeiten: javascript verwendet utf-16, und nicht in der folgenden Tabelle (utf-8), aber es ist ein gutes Beispiel zu verstehen, weil utf-16 Tisch lang

enter image description here

a 97 und A 65 ist

, wenn Sie versuchen console.log("a" > "A") //true Sortier Strings in Klein

+1

Die Theorie ist korrekt, aber JavaScript verwendet das [UTF-16] (http: // www .unicode.org/faq/utf_bom.html) Codierung des [Unicode] (http://www.unicode.org/charts/nameslist/index.html) Zeichensatzes. –

+0

@TomBlodget das erklärt mir so viele andere Dinge, danke! –

+0

Ich bin froh. Gleiches gilt für Java, .NET, HTML, XML, .... –

Verwandte Themen