Optimering av konvertering till array i JavaScript
Det är inte alltid nödvändigt att dela upp en sträng i en array för att göra något med den. Låt oss titta på ett exempel. Anta att vi har följande kod:
let num = 123456789;
let arr = String(num).split('');
let sum = 0;
for (let elem of arr) {
sum += +elem;
}
console.log(sum);
Varför är det dåligt att dela upp i en array här? För det första, det kräver processorkraft att dela upp i en array, för det andra kommer den resulterande arrayen att ta upp plats i arbetsminnet (dessutom kommer den att ta upp mer plats än själva strängen).
Men faktiskt kan man med for-of
iterera över inte bara arrayer,
utan också strängar:
let num = 123456789;
let str = String(num);
let sum = 0;
for (let char of str) {
sum += +char;
}
console.log(sum);
Följande kod letar efter summan av siffrorna i ett nummer som matats in i en input. Utför optimering:
<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);
});
Följande kod räknar antalet bokstäver i en sträng. Utför optimering:
let str = 'abcaab';
let arr = str.split('');
let i = 0;
for (let elem of arr) {
if (elem == 'a') {
i++;
}
}
console.log(i);
Följande kod kontrollerar förekomsten av ett tecken i en sträng. Utför optimering:
let str = 'abcaab';
let arr = str.split('');
console.log(arr.includes('a'));