JavaScript-daky aýlawly amallary optimizasiýasy

Hatda ýeňil amal hem, aýlawda köp mukdarda gaýtalanan bolsa, köp resurs soraýar.

Mysala seredeliň. Bizde belli bir massiw berlen diýeliň:

javascriptlet arr = [1, 2, 3, 4, 5, 6];

Geliň bu massiw elementleriniň ortasyndan tapalyň. Bunyň üçin elementleriň jemyny tapmaly we ony sanyna bölmeli. Belli bir programmist bu meseläni aşakdaky ýaly çözen bolsun:

javascriptlet avg  = 0;

for (let elem of arr) {
  avg += elem / arr.length;
}

console.log(avg);

Geliň bu çözgüdüň problemalaryna seredeliň. Tehniki taýdan kod dogry işleýär we dogry jogap berýär. Mesele şonda, matematiki taýdan dogry bolmagy ýaly jemini sanyna bölmek, şeýle hem her bir goşulujyny sanyna bölmek.

Emma, başga bir problem ýüze çykýar. Mesele şonda, biz bölünişi massiwimizde näçe element bar bolsa, şonça gezek ýerine ýetireris. We şondan soň, biz artykmaç amallaryň köpüsini edýäris, sebäbi bölünişi ahyrda - bir gezek, tapylan jemini bölüp ýerine ýetirmek bolardy.

Geliň kodymyzy optimizasiýa edeliň:

javascriptlet sum = 0;

for (let elem of arr) {
  sum += elem;
}

let avg = sum / arr.length;
console.log(avg);
Задание 1

Aşakdaky kody optimizasiýa ediň:

javascriptfor (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);
  }
}
Задание 2

Aşakdaky kody optimizasiýa ediň:

javascriptlet 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);