JavaScript에서 배열 변환 최적화
문자열로 무언가를 하기 위해 항상 배열로 분할해야 하는 것은 아닙니다. 예를 통해 살펴보겠습니다. 다음과 같은 코드가 있다고 가정해 봅시다:
let num = 123456789;
let arr = String(num).split('');
let sum = 0;
for (let elem of arr) {
sum += +elem;
}
console.log(sum);
여기서 배열로 분할하는 것이 왜 나쁠까요? 첫째, 배열로 분할하는 데 CPU 리소스가 소비되고, 둘째, 결과 배열이 RAM 공간을 차지하기 때문입니다 (게다가 이 공간은 원래 문자열이 차지하는 공간보다 클 수 있습니다).
사실 for-of 루프는 배열뿐만 아니라
문자열도 순회할 수 있습니다:
let num = 123456789;
let str = String(num);
let sum = 0;
for (let char of str) {
sum += +char;
}
console.log(sum);
다음 코드는 입력 필드에 입력된 숫자의 자릿수 합을 찾습니다. 최적화를 수행하세요:
<input>
let input = document.querySelector('input');
input.addEventListener('blur', function() {
let digits = input.value.split('');
let sum = 0;
for (let digit of digits) {
sum += +digit;
}
console.log(sum);
});
다음 코드는 문자열의 문자 개수를 계산합니다. 최적화를 수행하세요:
let str = 'abcaab';
let arr = str.split('');
let i = 0;
for (let elem of arr) {
if (elem == 'a') {
i++;
}
}
console.log(i);
다음 코드는 문자열에 특정 문자가 있는지 확인합니다. 최적화를 수행하세요:
let str = 'abcaab';
let arr = str.split('');
console.log(arr.includes('a'));