Иловаҳои зиёди давр дар JavaScript-ро оптималӣ кардан
Дар рамзи зер як барномасоз тафтиш мекунад,
ки оё адади 3 дар массив вуҷуд дорад ё не:
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);
Дар ҳалли ӯ чӣ хато аст? Чунон ки менамояд,
ҳеҷ амалиёти иловагӣ дар давр анҷом намеёбад.
Аммо мушкили он аст, ки пас аз муайян шудани
вуҷуди адади 3 дар массив, давр
ҳамчунон то охири массив давом меёбад.
Норационалтарин ҳолат он хоҳад буд, агар адади 3
дар ҷои гӯе дар аввали массив ёфт шавад, ва худи массив
дарозӣ, бигӯем, 1000 унсурро дошта бошад.
Як ҳазор такрори бефоидаи иловагии давр ба амал ояд!
Оптималӣ нест.
Рамзро оптималӣ мекунем, даврро ба вақт боздорем:
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);
Рамзи зер ҳисоб мекунад, ки
чӣ қадар унсури массивро бояд ҷамъ кард,
то ҷамъ аз 10 зиёдтар шавад.
Оптималӣ гузоред:
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);
Рамзи зер рақамҳои ҷуфтро аз фосилаи додашуда чоп мекунад. Оптималӣ гузоред:
for (let i = 0; i <= 100; i++) {
if (i % 2 === 0) {
console.log(i);
}
}
Рамзи зер рақамҳоро чоп мекунад,
ки ҳамзамон ба 2
ва ба 3 тақсим мешаванд. Оптималӣ гузоред:
for (let i = 0; i <= 100; i++) {
if (i % 2 === 0 && i % 3 === 0) {
console.log(i);
}
}
Рамзи зер ҳама ҷумъаҳои
13-уми соли ҷориро меҷӯяд.
Оптималӣ гузоред:
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);
}
}
}