JavaScript-da aýlawlaryň artykmaç geçişlerini optimizasiýa etmek
Aşakdaky kodda bir programmist,
massiwde 3 san bardygyny barlap görýär:
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
let exists = false;
for (let elem of arr) {
if (elem === 3) {
exists = true;
}
}
console.log(exists);
Onuň çözgüdinde nämem ýalňyş? Görünüşde
aýlawda hiç hili artykmaç amallar edilmeýär.
Şonda-da, mesela, 3 san massiwde bardygyny
anyklanandan soň, aýlaw massiw ahyryna çenli
öwrülmegini dowam etdirýär.
Iň irrasional boljak ýagdaý, 3 sany massiwde
başlarynda tapylsa we massiw özi, aýdyň, 1000
element uzynlygynda bolsa. Şonda bir müň peýdasyz
artykmaç aýlaw iterasiýasy bolup biler! Optimallaşdyrylmadyk.
Kody, aýlawy wagtında duruzyp, optimizasiýa edeliň:
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
let exists = false;
for (let elem of arr) {
if (elem === 3) {
exists = true;
break;
}
}
console.log(exists);
Aşakdaky kod, jemi 10-dan uly bolmak üçin
maşiwde näçe element goşmalydygyny hasaplaýar.
Optimizasiýa ýerine ýetiriň:
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
let sum = 0;
let i = 1;
for (let elem of arr) {
sum += elem;
if (sum <= 10) {
i++;
}
}
console.log(i);
Aşakdaky kod, berlen aralykdaky jut sanlary çap edýär. Optimizasiýa ýerine ýetiriň:
for (let i = 0; i <= 100; i++) {
if (i % 2 === 0) {
console.log(i);
}
}
Aşakdaky kod, bir wagtyň özünde 2
we 3 sanlara bölünýän sanlary çap edýär.
Optimizasiýa ýerine ýetiriň:
for (let i = 0; i <= 100; i++) {
if (i % 2 === 0 && i % 3 === 0) {
console.log(i);
}
}
Aşakdaky kod, şu ýyldaky ähli ýagny
13-ne jat ýagnylary gözleýär.
Optimizasiýa ýerine ýetiriň:
for (let i = 0; i <= 11; i++) {
let curr = new Date;
let last = new Date(curr.getFullYear(), i + 1, 0).getDate();
for (let j = 1; j <= last; j++) {
let date = new Date(curr.getFullYear(), i, j);
if (date.getDate() === 13 && date.getDay() === 5) {
console.log(date);
}
}
}