# Оптимизация преобразования в массив в JavaScript

Не всегда нужно разбивать строку в массив, чтобы что-то с ней сделать. Давайте посмотрим на примере. Пусть у нас есть следующий код:

`let num = 123456789; let arr = String(num).split(''); let sum = 0; for (let elem of arr) { sum += +elem; } console.log(sum);`

Почему здесь разбивать в массив плохо? Потому что, во-первых, на разбиение в массив тратятся ресурсы процессора, во-вторых, полученный массив будет занимать место в оперативной памяти (причем оно будет больше, чем место, которое занимает сама строка).

А ведь на самом деле с помощью `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'));`
←→
↑
en ru