Оптимизация преобразования в массив в 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'));