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