Optimalizace převodu na pole v JavaScriptu
Není vždy nutné převádět řetězec na pole, abychom s ním něco provedli. Podívejme se na příklad. Mějme následující kód:
let num = 123456789;
let arr = String(num).split('');
let sum = 0;
for (let elem of arr) {
sum += +elem;
}
console.log(sum);
Proč je zde převod na pole špatný? Protože zaprvé, převod na pole spotřebovává procesorové zdroje, a zadruhé, výsledné pole bude zabírat místo v operační paměti (a to více místa, než zabírá samotný řetězec).
Pomocí for-of
lze ale iterovat nejen přes pole,
ale i přes řetězce:
let num = 123456789;
let str = String(num);
let sum = 0;
for (let char of str) {
sum += +char;
}
console.log(sum);
Následující kód hledá součet číslic zadaného čísla v inputu. Proveďte optimalizaci:
<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);
});
Následující kód počítá množství písmen v řetězci. Proveďte optimalizaci:
let str = 'abcaab';
let arr = str.split('');
let i = 0;
for (let elem of arr) {
if (elem == 'a') {
i++;
}
}
console.log(i);
Následující kód kontroluje přítomnost symbolu v řetězci. Proveďte optimalizaci:
let str = 'abcaab';
let arr = str.split('');
console.log(arr.includes('a'));