Optimering af konvertering til array i JavaScript
Det er ikke altid nødvendigt at opdele en streng i et array for at gøre noget ved den. Lad os se på et eksempel. Antag, at vi har følgende kode:
let num = 123456789;
let arr = String(num).split('');
let sum = 0;
for (let elem of arr) {
sum += +elem;
}
console.log(sum);
Hvorfor er det dårligt at opdele i et array her? Fordi det for det første bruger processorressourcer at opdele i et array, og for det andet vil det resulterende array optage plads i RAM (og denne plads vil være mere end den plads, som selve strengen optager).
Men faktisk kan man med for-of
iterere ikke kun over arrays,
men også over strenge:
let num = 123456789;
let str = String(num);
let sum = 0;
for (let char of str) {
sum += +char;
}
console.log(sum);
Følgende kode finder summen af cifre i et indtastet tal fra et inputfelt. Foretag optimeringen:
<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);
});
Følgende kode tæller antallet af bogstaver i en streng. Foretag optimeringen:
let str = 'abcaab';
let arr = str.split('');
let i = 0;
for (let elem of arr) {
if (elem == 'a') {
i++;
}
}
console.log(i);
Følgende kode kontrollerer tilstedeværelsen af et symbol i en streng. Foretag optimeringen:
let str = 'abcaab';
let arr = str.split('');
console.log(arr.includes('a'));