Оптимизацияи такрори амалиёти вазнин дар JavaScript
Дар дарси гузашта такрори фарохонӣ кардани функсияҳо дар воқеъ вақти хеле камеро талаб мекунанд ва оптимизацияи мо хеле бисёр наҳваҳам намесармояд. Аммо, ҳама чиз аз ин бисёр бадтар хоҳад буд, агар мо чанд бора фарохонӣ кардани функсияи "вазнин"-ро иҷро кунем, ки вақти нисбатан дарозеро иҷро мекунад.
Бигзор, барои намуна, мо функсияе дорем, ки тақсимкунандаҳои ададро меёбад:
function getDivisorsSum(num) {
let res = 0;
for (let i = 1; i <= num; i++) {
if (num % i === 0) {
res += i;
}
}
return res;
}
Ошкораст, ки ин функсия хеле "вазнин" аст. Аз ин рӯ, навиштани ин гуна рамз идеяи номатлубе хоҳад буд:
let num = 123456;
if (getDivisorsSum(num) >= 10 && getDivisorsSum(num) <= 100) {
console.log('+++');
} else {
console.log('---');
}
Албатта, беҳтар аст, ки амалиёти "вазнин"-ро як бор иҷро карда ва натиҷаро дар тағирёбанда сабт кунед, ва сипас он тағирёбандаро дар ҷойҳои зарурӣ истифода баред:
let num = 123456;
let sum = getDivisorsSum(num);
if (sum >= 10 && sum <= 100) {
console.log('+++');
} else {
console.log('---');
}
Рамзи дар поин овардашударо оптимизация кунед:
let num = 1233456789;
if (getSumSquare(num) >= 10 && getSumSquare(num) <= 100) {
console.log('+++');
} else {
console.log('---');
}
function getSumSquare(num) {
let digits = String(num).split('');
let sum = 0;
for (let digit of digits) {
sum += digit ** 2;
}
return sum;
}