Ottimizzazione della conversione in array in JavaScript
Non è sempre necessario suddividere una stringa in un array per fare qualcosa con essa. Diamo un'occhiata a un esempio. Supponiamo di avere il seguente codice:
let num = 123456789;
let arr = String(num).split('');
let sum = 0;
for (let elem of arr) {
sum += +elem;
}
console.log(sum);
Perché suddividere in un array è negativo qui? Perché, in primo luogo, la suddivisione in un array consuma risorse della CPU, in secondo luogo, l'array risultante occuperà spazio nella memoria RAM (e sarà più grande dello spazio occupato dalla stringa stessa).
E in realtà, con for-of
puoi iterare non solo sugli array,
ma anche sulle stringhe:
let num = 123456789;
let str = String(num);
let sum = 0;
for (let char of str) {
sum += +char;
}
console.log(sum);
Il seguente codice cerca la somma delle cifre di un numero inserito in un input. Esegui l'ottimizzazione:
<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);
});
Il seguente codice conta il numero di lettere in una stringa. Esegui l'ottimizzazione:
let str = 'abcaab';
let arr = str.split('');
let i = 0;
for (let elem of arr) {
if (elem == 'a') {
i++;
}
}
console.log(i);
Il seguente codice verifica la presenza di un carattere in una stringa. Esegui l'ottimizzazione:
let str = 'abcaab';
let arr = str.split('');
console.log(arr.includes('a'));