Optimalizácia prevodu na pole v JavaScripte
Nie vždy je potrebné rozdeliť reťazec na pole, aby sme s ním niečo urobili. Pozrime sa na príklad. Majme nasledujúci kód:
let num = 123456789;
let arr = String(num).split('');
let sum = 0;
for (let elem of arr) {
sum += +elem;
}
console.log(sum);
Prečo je tu rozdelenie na pole zlé? Pretože po prvé, na rozdelenie na pole sa míňajú procesorové zdroje, po druhé, výsledné pole bude zaberať miesto v operačnej pamäti (a to bude väčšie ako miesto, ktoré zaberá samotný reťazec).
Veď pomocou for-of
môžeme prechádzať nielen polia,
ale aj reťazce:
let num = 123456789;
let str = String(num);
let sum = 0;
for (let char of str) {
sum += +char;
}
console.log(sum);
Nasledujúci kód hľadá súčet číslic zadaného čísla v inpute. Vykonajte optimalizáciu:
<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);
});
Nasledujúci kód počíta počet písmen v reťazci. Vykonajte optimalizáciu:
let str = 'abcaab';
let arr = str.split('');
let i = 0;
for (let elem of arr) {
if (elem == 'a') {
i++;
}
}
console.log(i);
Nasledujúci kód kontroluje prítomnosť symbolu v reťazci. Vykonajte optimalizáciu:
let str = 'abcaab';
let arr = str.split('');
console.log(arr.includes('a'));