JavaScript를 이용해 코딩테스트를 풀다 보면 문자열을 배열로 변환해야 하는 경우가 존재한다.
예를 들어 'javascript'라는 문자열을 ['j', 'a', 'v', 'a', 's', 'c', 'r', 'i', 'p', 't']로 변환하는 것처럼이다.
이 과정에서 사용할 수 있는 방법은 크게 3가지가 있다.
이번 포스팅에서는 문자열을 배열로 변환하는 방법을 알아보고 코딩테스트를 풀 때 어떤 방법이 가장 효율적인지에 대해 알아보고자 한다.
'string'.split('');
[...'string'];
Array.from('string');
앞선 문자열을 배열로 변환하는 3가지 방법의 속도를 MeasureThat에서 벤치마크 테스트를 통해 비교해 보았다.
출처 : https://measurethat.net/Benchmarks/ShowResult/354565
Benchmark 테스트를 통해 각 코드의 평균 실행 시간과 성능 차이를 알아보았다.
위 Benachmark results 결과는 각 테스트 케이스에 대해 초당 실행 횟수(ops/sec)를 보여주어 이 값이 높을수록 코드가 더 빠르게 실행된다.
따라서 실행 결과 스프레드 연산자의 실행 속도가 가장 빠르고, 다음으로 Array.split, Array.from인 것을 확인할 수 있다.
즉, 스프레드 연산자가 Array.from에 비해 약 2배 정도 빠른 성능을 보여준다.
속도가 중요한 상황이면 스프레드 연산자를 사용하는 것이 유리하다.
또한 스프레드 연산자를 우선시해서 사용해야 하는 이유가 있다.
바로 split 메서드는 문자열에 이모티콘과 같은 멀티바이느 UTF-8 문자가 포함되어 있다면 원하는 결과를 얻을 수 없다.
예를 들어, 문자열 'computer💻'를 배열로 변환한다면 결과는 다음과 같을 것이다.
'computer💻'.split(''); // [ 'c', 'o', 'm', 'p', 'u', 't', 'e', 'r', '\ud83d', '\udcbb' ] [...'computer💻']; // [ 'c', 'o', 'm', 'p', 'u', 't', 'e', 'r', '💻' ] Array.from('computer💻'); // [ 'c', 'o', 'm', 'p', 'u', 't', 'e', 'r', '💻' ]
split('')는 이모티콘을 제대로 분리하지 못하고 UTF-16 코드 단위로 나누어 버린다.결과적으로 우리가 원하는 "💻" 대신 '\ud83d'와 '\udcbb' 같은 코드가 나온다.
반면 스프레드 연산자와 Array.from은 이모티콘을 제대로 처리한다.
즉, 이모티콘이나 멀티바이트 문자를 다룰 가능성이 있다면 split은 적합하지 않다.
스프레드 연산자는 가독성과 간결함 면에서도 큰 장점이 있다.
const result1 = 'string'.split(''); const result2 = [...'string']; const result3 = Array.from('string');
따라서 문자열을 배열로 변환해야 할 때는 스프레드 연산자를 사용하는 것을 추천한다.
References
https://measurethat.net/Benchmarks/ShowResult/354565
Run results for: array.split vs array.from vs spread - MeasureThat.net
User agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.5249.114 Whale/3.17.145.12 Safari/537.36 Browser: Chrome 106 Operating system: Mac OS X 10.15.7 Device Platform: Desktop Date tested: 2 years ag
measurethat.net
https://velog.io/@sunohvoiin/JavaScript-%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84-%EB%B0%B0%EC%97%B4%EB%A1%9C-%EB%B3%80%ED%99%98%ED%95%98%EB%8A%94-3%EA%B0%80%EC%A7%80-%EB%B0%A9%EB%B2%95-convert-string-to-array
[JavaScript] 문자열을 배열로 변환하는 3가지 방법 (convert string to array)
코딩테스트 문제를 풀거나 프로젝트를 할 때, 문자열을 배열로 변환해야 하는 경우가 상당히 흔히 있다.예) 'string' -> \['s', 't', 'r', 'i', 'n', 'g'] 이렇게 말이다!이때 흔히 쓰는 방법은 세 가지가 있
velog.io
[JavaScript] 문자열에서 배열 변환하는 방법 비교 : split & spread & Array.from
JavaScript를 이용해 코딩테스트를 풀다 보면 문자열을 배열로 변환해야 하는 경우가 존재한다.
예를 들어 'javascript'라는 문자열을 ['j', 'a', 'v', 'a', 's', 'c', 'r', 'i', 'p', 't']로 변환하는 것처럼이다.
이 과정에서 사용할 수 있는 방법은 크게 3가지가 있다.
이번 포스팅에서는 문자열을 배열로 변환하는 방법을 알아보고 코딩테스트를 풀 때 어떤 방법이 가장 효율적인지에 대해 알아보고자 한다.
01. 문자열에서 배열 변환하는 방법 3가지
1️⃣ split 메서드
2️⃣ 스프레드 연산자
3️⃣ Array.from 메서드
02. 3가지 방법 속도 비교 : 스프레드 연산자가 가장 빠름
앞선 문자열을 배열로 변환하는 3가지 방법의 속도를 MeasureThat에서 벤치마크 테스트를 통해 비교해 보았다.
Benchmark 테스트를 통해 각 코드의 평균 실행 시간과 성능 차이를 알아보았다.
위 Benachmark results 결과는 각 테스트 케이스에 대해 초당 실행 횟수(ops/sec)를 보여주어 이 값이 높을수록 코드가 더 빠르게 실행된다.
따라서 실행 결과 스프레드 연산자의 실행 속도가 가장 빠르고, 다음으로 Array.split, Array.from인 것을 확인할 수 있다.
즉, 스프레드 연산자가 Array.from에 비해 약 2배 정도 빠른 성능을 보여준다.
속도가 중요한 상황이면 스프레드 연산자를 사용하는 것이 유리하다.
또한 스프레드 연산자를 우선시해서 사용해야 하는 이유가 있다.
바로 split 메서드는 문자열에 이모티콘과 같은 멀티바이느 UTF-8 문자가 포함되어 있다면 원하는 결과를 얻을 수 없다.
예를 들어, 문자열 'computer💻'를 배열로 변환한다면 결과는 다음과 같을 것이다.
split('')는 이모티콘을 제대로 분리하지 못하고 UTF-16 코드 단위로 나누어 버린다.
결과적으로 우리가 원하는 "💻" 대신 '\ud83d'와 '\udcbb' 같은 코드가 나온다.
반면 스프레드 연산자와 Array.from은 이모티콘을 제대로 처리한다.
즉, 이모티콘이나 멀티바이트 문자를 다룰 가능성이 있다면 split은 적합하지 않다.
💡 스프레드 연산자의 가독성과 코드 간결함
스프레드 연산자는 가독성과 간결함 면에서도 큰 장점이 있다.
🎯 결론
따라서 문자열을 배열로 변환해야 할 때는 스프레드 연산자를 사용하는 것을 추천한다.
References
https://measurethat.net/Benchmarks/ShowResult/354565
Run results for: array.split vs array.from vs spread - MeasureThat.net
User agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.5249.114 Whale/3.17.145.12 Safari/537.36 Browser: Chrome 106 Operating system: Mac OS X 10.15.7 Device Platform: Desktop Date tested: 2 years ag
measurethat.net
https://velog.io/@sunohvoiin/JavaScript-%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84-%EB%B0%B0%EC%97%B4%EB%A1%9C-%EB%B3%80%ED%99%98%ED%95%98%EB%8A%94-3%EA%B0%80%EC%A7%80-%EB%B0%A9%EB%B2%95-convert-string-to-array
[JavaScript] 문자열을 배열로 변환하는 3가지 방법 (convert string to array)
코딩테스트 문제를 풀거나 프로젝트를 할 때, 문자열을 배열로 변환해야 하는 경우가 상당히 흔히 있다.예) 'string' -> \['s', 't', 'r', 'i', 'n', 'g'] 이렇게 말이다!이때 흔히 쓰는 방법은 세 가지가 있
velog.io
'Front-End > JavaScript' 카테고리의 다른 글