Web_Miscellaneous / JavaScript / 2.9 문자열을 배열로 바꾸기
2.9문자열을 배열로 바꾸기
자바스크립트에서 문자열을 배열로 바꾸는 방법들 정리
TL;DR
추억의 쪽지 시험
1. str.split('')
javascript'hello'.split(''); // ['h', 'e', 'l', 'l', 'o']
가장 전통적인 방식이다. 내부적으로는 문자열을 UTF-16 코드 단위로 분리하는데, 이 때문에 일부 유니코드 문자(이모지나 한글 자모)의 경우 split
이 부정확한 결과를 가져올 수도 있다.
javascriptconst emoji = '👩👩👦👦'; console.log(emoji.split('')); // ['👩', '', '👩', '', '👦', '', '👦'] (잘림 발생)
2. [...str]
스프레드 문법은 문자 단위(grapheme cluster) 기준으로 자르기 때문에 정확하게 문자열을 배열로 바꾼다.
javascript[...'hello']; // ['h', 'e', 'l', 'l', 'o'] const emoji = '👩👩👦👦'; console.log([...emoji]); // ['👩👩👦👦']
3. Array.from(str)
javascriptArray.from('hello'); // ['h', 'e', 'l', 'l', 'o']
역시 정확하지만, 특이점이자 장점은 두 번째 인자로 매핑 함수를 사용 가능하다는 것이다.
javascriptArray.from('123', c => +c); // [1, 2, 3]
4. Object.assign([], str)
javascriptObject.assign([], 'abc'); // ['a', 'b', 'c']
문자열을 배열처럼 인덱싱하여 복사하는 방법이다. 직관적이지 않은 표현으로 인해 잘 사용되지 않는다.
정리
목적 | 방식 | 이유 |
---|---|---|
일반 문자열 분해 | [...str] | 간결하고 오류 없음 |
오래된 브라우저 환경 | str.split('') | ES5 호환됨 |
분해 + 가공이 동시에 필요 | Array.from(str, mapFn) | 가공 로직을 포함할 수 있음 |