Massiiviks teisendamise optimeerimine JavaScriptis
Alati ei ole vaja stringi massiiviks jagada, et midagi sellega teha. Vaatame näidet. Olgu meil järgmine kood:
let num = 123456789;
let arr = String(num).split('');
let sum = 0;
for (let elem of arr) {
sum += +elem;
}
console.log(sum);
Miks on massiiviks jagamine siin halb? Sest esiteks, massiiviks jagamisele kuluvad protsessori ressursid, teiseks, saadud massiiv hõivab ruutu operatiivmälus (muide, see on rohkem kui ruut, mida hõivab string ise).
Aga tegelikult saab for-of
abil läbida mitte ainult massiive,
vaid ka stringe:
let num = 123456789;
let str = String(num);
let sum = 0;
for (let char of str) {
sum += +char;
}
console.log(sum);
Järgmine kood otsib sisestatud numbri numbrite summat. Tehke optimeerimine:
<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);
});
Järgmine kood loeb stringis olevate tähtede arvu. Tehke optimeerimine:
let str = 'abcaab';
let arr = str.split('');
let i = 0;
for (let elem of arr) {
if (elem == 'a') {
i++;
}
}
console.log(i);
Järgmine kood kontrollib sümboli olemasolu stringis. Tehke optimeerimine:
let str = 'abcaab';
let arr = str.split('');
console.log(arr.includes('a'));