Pārveidošanas optimizēšana masīvā JavaScript
Ne vienmēr ir nepieciešams sadalīt virkni masīvā, lai ar to kaut ko izdarītu. Apskatīsim piemēru. Pieņemsim, ka mums ir šāds kods:
javascriptlet num = 123456789;
let arr = String(num).split('');
let sum = 0;
for (let elem of arr) {
sum += +elem;
}
console.log(sum);
Kāpēc šeit sadalīšana masīvā ir slikta? Tāpēc ka, pirmkārt, sadalīšanai masīvā tiek tērēti procesora resursi, otrkārt, iegūtais masīvs aizņems vietu operatīvajā atmiņā (turklāt tā būs lielāka nekā vieta, ko aizņem pati virkne).
Patiesībā ar for-of
var iterēt ne tikai masīvus,
bet arī virknes:
javascriptlet num = 123456789;
let str = String(num);
let sum = 0;
for (let char of str) {
sum += +char;
}
console.log(sum);
Задание 1
Šis kods meklē ievadītā skaitļa ciparu summu input laukā. Veiciet optimizāciju:
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
Šis kods saskaita burtu daudzumu virknē. Veiciet optimizāciju:
javascriptlet str = 'abcaab';
let arr = str.split('');
let i = 0;
for (let elem of arr) {
if (elem == 'a') {
i++;
}
}
console.log(i);
Задание 3
Šis kods pārbauda simbola esamību virknē. Veiciet optimizāciju:
javascriptlet str = 'abcaab';
let arr = str.split('');
console.log(arr.includes('a'));