Optymalizacja konwersji na tablicę w JavaScript
Nie zawsze trzeba dzielić ciąg znaków na tablicę, aby coś z nim zrobić. Spójrzmy na przykład. Załóżmy, że mamy następujący kod:
let num = 123456789;
let arr = String(num).split('');
let sum = 0;
for (let elem of arr) {
sum += +elem;
}
console.log(sum);
Dlaczego rozbijanie na tablicę jest tutaj złe? Ponieważ po pierwsze, rozbicie na tablicę zużywa resursy procesora, po drugie, otrzymana tablica będzie zajmować miejsce w pamięci operacyjnej (i to więcej niż miejsce zajmowane przez sam ciąg znaków).
A tak naprawdę za pomocą for-of
można iterować nie tylko po tablicach,
ale także po ciągach znaków:
let num = 123456789;
let str = String(num);
let sum = 0;
for (let char of str) {
sum += +char;
}
console.log(sum);
Poniższy kod znajduje sumę cyfr liczby wprowadzonej w pole input. Wykonaj optymalizację:
<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);
});
Poniższy kod zlicza liczbę liter w ciągu znaków. Wykonaj optymalizację:
let str = 'abcaab';
let arr = str.split('');
let i = 0;
for (let elem of arr) {
if (elem == 'a') {
i++;
}
}
console.log(i);
Poniższy kod sprawdza obecność symbolu w ciągu znaków. Wykonaj optymalizację:
let str = 'abcaab';
let arr = str.split('');
console.log(arr.includes('a'));