2016-07-14 13 views
0
var test = ['hello', 'Hello'] 
var arg1 = test[0].split('').sort().join('').toLowerCase(); // ehllo 
var arg2 = test[1].split('').sort().join('').toLowerCase(); // hello 

Würde jemand in der Lage zu erklären, warum die Sortiermethode scheint keine Auswirkungen auf das 2. Element des Testarrays zu haben?Javascript Sortierung Methode läuft nicht auf Array [1]

+10

' "H"< "e" === true' –

+2

' Test [1] .tolowercase() split ('') sort() verbinden.. ('');. 'Funktionieren soll . Sie sortieren und transformieren dann. –

+0

konvertieren Sie zuerst in Kleinbuchstaben und vergleichen Sie dann die Elemente – ochi

Antwort

4

Wenn Sie Fall ignorieren wollen, sollten Sie klein geschrieben vor dem Sortieren:

console.log('Hello'.toLowerCase().split('').sort().join('')); // ehllo

8

console.log('H' < 'e', 'H'.charCodeAt(0), 'e'.charCodeAt(0));

Großbuchstaben reichen von 65 bis 90 Kleinbuchstaben im Bereich von 97 bis 122 String-Vergleiche auf Zeichencodes basieren.

Berücksichtigen Sie bei der Sortierung die Verwendung einer benutzerdefinierten Funktion.

2

Diese Frage in Stackoverflow beantwortet wurde, bevor case insensitive sorting in Javascript

'Hello'.split('').sort(function (a, b) { 
    return a.toLowerCase().localeCompare(b.toLowerCase()); 
}).join(''); 

Wenn Sie kümmern müssen ein case-sensitive Ausgabe z Hello würde eHllo