Optimizarea conversiei în array în JavaScript
Nu întotdeauna este necesar să despărțim un șir într-un array pentru a face ceva cu el. Să ne uităm la un exemplu. Să presupunem că avem următorul cod:
let num = 123456789;
let arr = String(num).split('');
let sum = 0;
for (let elem of arr) {
sum += +elem;
}
console.log(sum);
De ce este rău să-l despărțim într-un array aici? Pentru că, în primul rând, despărțirea într-un array consumă resurse CPU, iar în al doilea rând, array-ul rezultat va ocupa spațiu în memoria RAM (și acel spațiu va fi mai mult decât spațiul ocupat de șirul în sine).
Și, de fapt, folosind for-of
putem itera nu doar array-uri,
ci și șiruri de caractere:
let num = 123456789;
let str = String(num);
let sum = 0;
for (let char of str) {
sum += +char;
}
console.log(sum);
Următorul cod caută suma cifrelor unui număr introdus într-un câmp de input. Efectuați optimizarea:
<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);
});
Următorul cod numără cantitatea de litere dintr-un șir. Efectuați optimizarea:
let str = 'abcaab';
let arr = str.split('');
let i = 0;
for (let elem of arr) {
if (elem == 'a') {
i++;
}
}
console.log(i);
Următorul cod verifică prezența unui simbol într-un șir. Efectuați optimizarea:
let str = 'abcaab';
let arr = str.split('');
console.log(arr.includes('a'));