2016-07-31 4 views
0

Ich habe einige Probleme mit einer relativ einfachen Aufgabe. Ich muss die Zeichen einer Zeichenkette sortieren und die sortierte Zeichenkette (in Javascript) zurückbringen. Nach der Suche nach Antworten habe ich die Lösung gefunden, aber aus irgendeinem Grund gibt die Methode nicht die erwartete Ausgabe zurück.Sortieren einer Zeichenfolge in Javascript alphabetisch

var str = "Something"; 
var chars = []; 

for (var i = 0; i < str.length; i++) { 
    chars.push(str.charAt(i)); 
} 

chars.sort().join(""); 
console.log(chars); 

Der Ausgang I erhalten, ist dies:

["S", "e", "g", "h", "i", "m", "n", "o", "t"] 

1.) Trotz der .join() Methode die charachters sind noch durch Kommata getrennte Verwendung. Auch versucht, die .replace() -Methode zu verwenden, aber das bringt mich zum zweiten Problem.

2.) Der Typ der Zeichen bleibt ein Objekt, obwohl .join() eine Zeichenfolge zurückgeben sollte. Ich habe auch versucht, mit der .toString() -Methode, aber der Typ der Ausgabe bleibt ein Objekt.

+0

'chars.push()' drückt in ein Array, so dass ein Komma wird erwartet - verwenden Sie 'chars + =' stattdessen –

+0

Beachten Sie, dass '.sort()' standardmäßig nicht alphabetisch sortiert, sondern nach dem Unicode-Code-Punktwert jedes Zeichens sortiert. Das endet als alphabetisch, wenn Sie alle Kleinbuchstaben oder alle Großbuchstaben haben, aber in Ihrem Fall nicht. (So ​​kommt "Apfel" hinter "Zebra", aber vor "Zebra".) – nnnnnn

Antwort

4

join() ändert das Array nicht, aber gibt ein neues Objekt zurück, das Sie derzeit nicht verwenden. So Ihr Code sollte wie folgt aussehen:

var str = "Something"; 
var chars = []; 

for (var i = 0; i < str.length; i++) { 
    chars.push(str.charAt(i)); 
} 

chars = chars.sort().join(""); 
console.log(chars); 

Sie könnten jedoch tun dies in einem Motto:

let chars = str.split('').sort().join(''); 
0
const sorted = str.split('').sort().join('')