2016-07-31 13 views
0

私は比較的簡単な作業でいくつかの問題があります。私は文字列の文字をソートし、ソートされた文字列をJavascriptで返さなければなりません。私は答えを求めてグーグルで答えたが、何らかの理由でメソッドが期待した出力を返さない。Javascriptでアルファベット順に文字列を並べ替える

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

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

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

Iが受け取る出力は次ある:charachtersまだコンマで区切られている.join()メソッドを使用するにもかかわらず

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

1)。また、.replace()メソッドを使用しようとしましたが、それは2番目の問題に私をもたらします。

2.).join()は文字列を返さなければなりませんが、typeof charsはオブジェクトのままです。私も.toString()メソッドを使用しようとしましたが、出力のタイプはまだオブジェクトのままです。

+0

'chars.push()'配列にプッシュし、そうコンマが必要です - 代わりに 'chars + ='を使用してください –

+0

デフォルトでは、 '.sort()'はアルファベット順にソートされないので、各文字のUnicodeコードポイント値に従ってソートします。あなたが大文字でも小文字でも大文字であればアルファベット順で終わりますが、あなたの場合はそうではありません。 (したがって、 "apple"は '' Zebra''の後、 '' zebra''の前に来ます。) – nnnnnn

答えて

4

join()は配列を変更しませんが、現在使用していない新しいオブジェクトを返します。だからあなたのコードは次のようになります。

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); 

をただし、1つのライナーでこれを行うことができます:

let chars = str.split('').sort().join(''); 
0
const sorted = str.split('').sort().join('') 
関連する問題