2016-07-31 161 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); 

我接收的輸出是這樣的:

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

1)儘管使用。加入()方法的charachters仍然逗號分隔。也嘗試使用.replace()方法,但這使我想到了第二個問題。

2.)雖然.join()應該返回一個字符串,但typeof字符仍然是一個對象。我也嘗試使用.toString()方法,但輸出的類型仍然是一個對象。

+0

'chars.push()'推到一個數組,所以逗號預計 - 使用'chars + ='代替 –

+0

請注意,默認'.sort()'不會按字母順序排序,它會根據每個字符的Unicode代碼點值進行排序。如果你全部使用小寫字母或全部大寫字母,那麼最終會按字母順序排列,但在你的情況下你不會。 (所以'''蘋果''在'斑馬'之後,但在'斑馬'之前。) – 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); 

你可以,但是,這樣做的一個班輪:

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