Massiiviks teisendamise optimeerimine JavaScriptis
Alati ei ole vaja stringi massiiviks jagada, et midagi sellega teha. Vaatame näidet. Olgu meil järgmine kood:
javascriptlet 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:
javascriptlet num = 123456789;
let str = String(num);
let sum = 0;
for (let char of str) {
sum += +char;
}
console.log(sum);
Задание 1
Järgmine kood otsib sisestatud numbri numbrite summat. Tehke optimeerimine:
html<input>javascriptlet 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);
});
Задание 2
Järgmine kood loeb stringis olevate tähtede arvu. Tehke optimeerimine:
javascriptlet str = 'abcaab';
let arr = str.split('');
let i = 0;
for (let elem of arr) {
if (elem == 'a') {
i++;
}
}
console.log(i);
Задание 3
Järgmine kood kontrollib sümboli olemasolu stringis. Tehke optimeerimine:
javascriptlet str = 'abcaab';
let arr = str.split('');
console.log(arr.includes('a'));