JavaScript-те циклдік операцияларды оңтайландыру
Тіпті жеңіл операция да, циклде қайта-қайта орындалған кезде, көп ресурсты алып кетуі мүмкін.
Мысалға қарайық. Бізде белгілі бір массив берілген делік:
let arr = [1, 2, 3, 4, 5, 6];
Осы массив элементтерінің орташа мәнін табайық. Ол үшін элементтердің қосындысын тауып, оны санына бөлу керек. Бір программашы бұл мәселені келесі түрде шешкен болсын:
let avg = 0;
for (let elem of arr) {
avg += elem / arr.length;
}
console.log(avg);
Осы шешімнің мәселелерін қарастырайық. Техникалық тұрғыдан код дұрыс жұмыс істейді және дұрыс жауап береді. Математикалық тұрғыдан бүкіл қосындыны санға бөлу де, әрбір қосылғышты санға бөлу де дұрыс.
Алайда, басқа мәселе туындайды. Мәселе мында, біз бөлу операциясын массивтегі элементтер санына байланысты қайталаймыз. Нәтижесінде біз көптеген артық операцияларды орындаймыз, себебі бөлуді соңында - бір рет, табылған барлық қосындыны бөлу арқылы орындауға болатын еді.
Кодты оңтайландырайық:
let sum = 0;
for (let elem of arr) {
sum += elem;
}
let avg = sum / arr.length;
console.log(avg);
Келесі кодты оңтайландырыңыз:
for (let i = 1900; i <= 2100; i++) {
let curr = new Date;
let date = new Date(i, curr.getMonth(), curr.getDate());
if (curr.getDay() === date.getDay()) {
console.log(date);
}
}
Келесі кодты оңтайландырыңыз:
let obj = {a: 10, b: 20, c: 30, d: 40, e: 50};
let sum = 0;
for (let key in obj) {
if (String(obj[key])[0] === '1' || String(obj[key])[0] === '2') {
sum += obj[key];
}
}
console.log(sum);