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