split 메서드
split 메서드는
첫 번째 매개변수에 지정된
구분자를 기준으로 문자열을
배열로 분할합니다.
지정되지 않으면 전체
문자열이 반환됩니다. 빈 따옴표로 지정되면,
문자열의 각 문자는 별도의
배열 요소가 됩니다. 선택적 두 번째
매개변수로 결과 배열의 최대
요소 수를 지정할 수 있습니다.
구문
문자열.split([구분자], [최대 요소 수]);
예시
하이픈이 있는 문자열이 있다고 합시다. 이 문자열을
구분자 '-'를 기준으로
배열로 분할해 봅시다:
let str = 'ab-cd-ef';
let arr = str.split('-');
console.log(arr);
코드 실행 결과:
['ab', 'cd', 'ef']
예시
다시 구분자 '-'를 기준으로 문자열을 분할해 보겠습니다.
하지만 이번에는 두 번째 매개변수로
결과 배열의 최대 요소 수를, 예를 들어 2로 지정해 보겠습니다. 이 경우
배열에는 2개의 요소만 기록됩니다:
let str = 'ab-cd-ef';
let arr = str.split('-', 2);
console.log(arr);
코드 실행 결과:
['ab', 'cd']
예시
문자열의 각 문자를 별도의 배열 요소에 기록해 봅시다:
let str = 'abcde';
let arr = str.split('');
console.log(arr);
코드 실행 결과:
['a', 'b', 'c', 'd', 'e']
예시
문자열의 처음 3개의 문자를
별도의 배열 요소에 기록해 봅시다:
let str = 'abcde';
let arr = str.split('', 3);
console.log(arr);
코드 실행 결과:
['a', 'b', 'c']
예시
split를 사용하여
숫자 문자열을 분할해 봅시다.
결과는 숫자 배열이 아닌
문자열 배열이 된다는 점에 유의하세요:
let str = '12345';
let arr = str.split('');
console.log(arr);
코드 실행 결과:
['1', '2', '3', '4', '5']
예시 . 활용
문자열의 문자 순서를 역순으로 뒤집어 봅시다.
이를 위해 split를 사용하여 구분자 ''로
문자열을 배열로 분할합니다
(이렇게 하면 문자열의 각 문자가 별도의
배열 요소가 됩니다).
reverse를 사용하여 이 배열을 뒤집은 후,
join를 사용하여
뒤집힌 배열을 다시 결합합니다:
let str = '123456789';
let arr1 = str.split('');
let arr2 = arr1.reverse();
let res = arr2.join('');
console.log(res);
코드 실행 결과:
'987654321'
예시 . 활용
이전 문제의 해결 방법을 단순화해 보겠습니다 - 모든 명령을 체인으로 결합합니다:
let str = '123456789';
let res = str.split('').reverse().join('');
console.log(res);
코드 실행 결과:
'987654321'
예시 . 활용
숫자로 이루어진 문자열이 주어집니다. 이 문자열의 숫자 합을
구해봅시다.
이를 위해 문자열을 배열로 분할한 후,
이 배열을 순회하며 합을 구합니다.
주의할 점이 있습니다: split는
문자열을 반환하므로, 합산 시
Number를 사용하여 이 문자열 숫자를 실제
숫자로 변환해야 합니다:
let str = '12345';
let arr = str.split('');
let sum = 0;
for (let i = 0; i < arr.length; i++) {
sum += Number(arr[i]);
}
console.log(sum);
코드 실행 결과:
15
예시 . 활용
숫자가 주어집니다. 이 숫자의 각 자릿수를
별도의 배열 요소에 기록해 봅시다.
여기에는 함정이 있습니다 - split는
문자열에만 적용되지만, 여기서는 숫자가 주어졌습니다.
먼저 String를 사용하여 숫자를 문자열로 변환한 후,
split를 적용합니다:
let num = 12345;
let str = String(num);
let arr = str.split('');
console.log(arr);
코드 실행 결과:
['1', '2', '3', '4', '5']