Optimalisatie van conversie naar array in JavaScript
Het is niet altijd nodig om een string op te splitsen in een array om er iets mee te doen. Laten we een voorbeeld bekijken. Stel dat we de volgende code hebben:
let num = 123456789;
let arr = String(num).split('');
let sum = 0;
for (let elem of arr) {
sum += +elem;
}
console.log(sum);
Waarom is het hier slecht om op te splitsen in een array? Omdat het, ten eerste, processorbronnen kost om naar een array om te zetten, en ten tweede, de resulterende array ruimte in het werkgeheugen zal innemen (en dat zal meer zijn dan de ruimte die de string zelf inneemt).
Maar in werkelijkheid kan met for-of
niet alleen arrays worden doorlopen,
maar ook strings:
let num = 123456789;
let str = String(num);
let sum = 0;
for (let char of str) {
sum += +char;
}
console.log(sum);
De volgende code zoekt de som van de cijfers van een ingevoerd getal in een input. Voer optimalisatie uit:
<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);
});
De volgende code telt het aantal letters in een string. Voer optimalisatie uit:
let str = 'abcaab';
let arr = str.split('');
let i = 0;
for (let elem of arr) {
if (elem == 'a') {
i++;
}
}
console.log(i);
De volgende code controleert op de aanwezigheid van een symbool in een string. Voer optimalisatie uit:
let str = 'abcaab';
let arr = str.split('');
console.log(arr.includes('a'));