Otimização da conversão para array em JavaScript
Nem sempre é necessário dividir uma string em um array para fazer algo com ela. Vamos ver um exemplo. Suponha que temos o seguinte código:
let num = 123456789;
let arr = String(num).split('');
let sum = 0;
for (let elem of arr) {
sum += +elem;
}
console.log(sum);
Por que dividir em um array é ruim aqui? Porque, primeiro, a divisão em um array consome recursos de CPU, segundo, o array resultante ocupará espaço na memória RAM (e esse espaço será maior do que o espaço ocupado pela própria string).
Afinal, na verdade, com for-of
você pode iterar não apenas sobre arrays,
mas também sobre strings:
let num = 123456789;
let str = String(num);
let sum = 0;
for (let char of str) {
sum += +char;
}
console.log(sum);
O código a seguir encontra a soma dos dígitos de um número inserido em um input. Otimize o código:
<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);
});
O código a seguir conta a quantidade de letras em uma string. Otimize o código:
let str = 'abcaab';
let arr = str.split('');
let i = 0;
for (let elem of arr) {
if (elem == 'a') {
i++;
}
}
console.log(i);
O código a seguir verifica a presença de um caractere em uma string. Otimize o código:
let str = 'abcaab';
let arr = str.split('');
console.log(arr.includes('a'));