Optimización de la conversión a array en JavaScript
No siempre es necesario dividir una cadena en un array para hacer algo con ella. Veamos un ejemplo. Supongamos que tenemos el siguiente código:
let num = 123456789;
let arr = String(num).split('');
let sum = 0;
for (let elem of arr) {
sum += +elem;
}
console.log(sum);
¿Por qué es malo convertirlo en un array aquí? Porque, en primer lugar, la conversión a array consume recursos de la CPU, y en segundo lugar, el array resultante ocupará espacio en la memoria RAM (y será más grande que el espacio que ocupa la cadena original).
Y en realidad, con for-of
se pueden iterar no solo arrays,
sino también cadenas:
let num = 123456789;
let str = String(num);
let sum = 0;
for (let char of str) {
sum += +char;
}
console.log(sum);
El siguiente código busca la suma de los dígitos de un número introducido en un input. Realiza la optimización:
<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);
});
El siguiente código cuenta la cantidad de letras en una cadena. Realiza la optimización:
let str = 'abcaab';
let arr = str.split('');
let i = 0;
for (let elem of arr) {
if (elem == 'a') {
i++;
}
}
console.log(i);
El siguiente código verifica la presencia de un símbolo en una cadena. Realiza la optimización:
let str = 'abcaab';
let arr = str.split('');
console.log(arr.includes('a'));