sungyup's.

Web_Miscellaneous / JavaScript / 2.9 문자열을 배열로 바꾸기

2.9문자열을 배열로 바꾸기

자바스크립트에서 문자열을 배열로 바꾸는 방법들 정리

TL;DR

추억의 쪽지 시험

1. str.split('')

javascript
'hello'.split(''); // ['h', 'e', 'l', 'l', 'o']

가장 전통적인 방식이다. 내부적으로는 문자열을 UTF-16 코드 단위로 분리하는데, 이 때문에 일부 유니코드 문자(이모지나 한글 자모)의 경우 split이 부정확한 결과를 가져올 수도 있다.

javascript
const 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)

javascript
Array.from('hello'); // ['h', 'e', 'l', 'l', 'o']

역시 정확하지만, 특이점이자 장점은 두 번째 인자로 매핑 함수를 사용 가능하다는 것이다.

javascript
Array.from('123', c => +c); // [1, 2, 3]

4. Object.assign([], str)

javascript
Object.assign([], 'abc'); // ['a', 'b', 'c']

문자열을 배열처럼 인덱싱하여 복사하는 방법이다. 직관적이지 않은 표현으로 인해 잘 사용되지 않는다.

정리

목적방식이유
일반 문자열 분해[...str]간결하고 오류 없음
오래된 브라우저 환경str.split('')ES5 호환됨
분해 + 가공이 동시에 필요Array.from(str, mapFn)가공 로직을 포함할 수 있음