2016-07-31 2 views
0

나는 상대적으로 간단한 작업에 몇 가지 문제가 있습니다. 문자열의 문자를 정렬하고 정렬 된 문자열을 반환해야합니다 (자바 스크립트에서). 답변을 찾기 위해 인터넷 검색 후 솔루션을 찾았지만 어떤 이유로 인해 메서드가 예상 한 결과를 반환하지 않습니다. .join() 메소드를 사용에도 불구자바 스크립트에서 알파벳순으로 문자열 정렬

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

1)이 여전히 charachters 콤마로 분리된다 :

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 수신 출력이된다. 또한 .replace() 메서드를 사용하려고했지만 두 번째 문제가 발생합니다.

2.) .join()이 문자열을 반환해야하지만 char 유형은 개체로 남아 있습니다. 또한 .toString() 메서드를 사용해 보았지만 출력 유형이 여전히 개체로 남아 있습니다.

+0

'chars.push을()'그래서는 배열로 밀어 쉼표가 필요합니다 - 대신에'chars + ='를 사용하십시오 –

+0

기본적으로'.sort()'는 사전 순으로 정렬하지 않으므로 각 문자의 유니 코드 코드 포인트 값에 따라 정렬됩니다. 소문자 또는 모두 대문자 인 경우 알파벳순으로 끝나지 만, 그렇지 않은 경우에는 대문자로 끝납니다. (그래서 "사과"는 "얼룩말"뒤에 "얼룩말"앞에옵니다.) – 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('') 
관련 문제