JavaScript에서 배열 변환 최적화

문자열로 무언가를 하기 위해 항상 배열로 분할해야 하는 것은 아닙니다. 예를 통해 살펴보겠습니다. 다음과 같은 코드가 있다고 가정해 봅시다:

javascriptlet num = 123456789;
let arr = String(num).split('');
let sum = 0;

for (let elem of arr) {
  sum += +elem;
}

console.log(sum);

여기서 배열로 분할하는 것이 왜 나쁠까요? 첫째, 배열로 분할하는 데 CPU 리소스가 소비되고, 둘째, 결과 배열이 RAM 공간을 차지하기 때문입니다 (게다가 이 공간은 원래 문자열이 차지하는 공간보다 클 수 있습니다).

사실 for-of 루프는 배열뿐만 아니라 문자열도 순회할 수 있습니다:

javascriptlet num = 123456789;
let str = String(num);
let sum = 0;

for (let char of str) {
  sum += +char;
}

console.log(sum);
Задание 1

다음 코드는 입력 필드에 입력된 숫자의 자릿수 합을 찾습니다. 최적화를 수행하세요:

html<input>
javascriptlet 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);
});
Задание 2

다음 코드는 문자열의 문자 개수를 계산합니다. 최적화를 수행하세요:

javascriptlet str = 'abcaab';
let arr = str.split('');

let i = 0;

for (let elem of arr) {
  if (elem == 'a') {
    i++;
  }
}

console.log(i);
Задание 3

다음 코드는 문자열에 특정 문자가 있는지 확인합니다. 최적화를 수행하세요:

javascriptlet str = 'abcaab';
let arr = str.split('');

console.log(arr.includes('a'));