JavaScript හි ලූප පරිශීලනය කරමින් කේතය කැලැඹීම සඳහා උපදෙස්
දැන් මම ඔබට කේතයේ දෝෂ සෙවීමේ ක්රමය ඉගැන්වෙමි. කල්පනා කරන්න ඔබ පෙර පාඩමේ උපදෙස් අනුගමනය නොකර කොහොමහරි වැරදීමකට ලක්ව ක්රියා නොකරන කේතයක් ප්රතිඵලයක් ලෙස ලබා ගෙන ඇති බව. එහි දෝෂ සෙවීමට හා එය ක්රියාකාරී කිරීමට කෙසේද යන්න අපි බලමු.
බොහෝ ආරම්භකයන් දෝෂ සෙවීම සඳහා වැරදි ක්රමය භාවිතා කරයි. ඔවුන් කේතය දෙස බලා, දෝෂයක් දකිනු ඇතැයි බලාපොරොත්තුවෙන් සිටී. එය මෙලෙස පැය කිහිපයක් කරයි. මෙය එලෙස ක්රියා නොකරයි.
නිවැරදි ක්රමය වන්නේ විචල්යයන් කොන්සෝලයට මුද්රණය කිරීම සහ අවශ්ය දේ එහි තිබේද නැද්ද යන්න නිර්ණය කිරීමයි. මෙය කරන විට, ගැටලුව සිදුවී ඇතැයි සැකකරන ස්ථානයේ සිට ආරම්භ කර කේතය ඉහළට ගමන් කළ යුතුය. අපි එය ප්රායෝගිකව බලමු.
උදාහරණයක් ලෙස, ඔබට ඉලක්කම් දෙකක සංඛ්යා අඩංගු අරාවක් පුරාවට ගමන් කර පළමු ඉලක්කම දෙවැන්නට වඩා එකකින් වැඩි සංඛ්යා සොයා ගැනීමේ කාර්යයක් තිබුණා යැයි සිතමු. සරල බව සඳහා අරාවේ සංඛ්යා නූල් ලෙස ගබඩා කර ඇතැයි සිතමු.
ඔබ ගැටලුව විසඳා ඇති අතර පහත දක්වා ඇති කේතය ලබා ගෙන ඇතැයි සිතමු:
javascriptlet arr = ['21', '32', '34', '43', '45', '54', '55'];
let sum = 0;
for (let elem of arr) {
if (elem[0] === elem[1] + 1) {
sum += elem;
}
}
console.log(sum); // 0 ලබා දෙයි
කෙසේ වෙතත්, කේතය 0 ලබා දෙයි. මෙම
අවස්ථාවේදී, පළමුව කළ යුත්තේ විචල්යයේ
කේතය ක්රියාත්මක වීම බලන්නේ කියා
if තුළට පැමිණෙන්නේද නැද්ද යන්න පරීක්ෂා
කිරීමයි. අපි එහි යමක් කොන්සෝලයට
මුද්රණය කරමු:
javascriptlet arr = ['21', '32', '34', '43', '45', '54', '55'];
let sum = 0;
for (let elem of arr) {
if (elem[0] === elem[1] + 1) {
console.log('!'); // කිසිවක් මුද්රණය නොකරයි
sum += elem;
}
}
console.log(sum);
කොන්සෝලයේ කිසිවක් දිස් නොවූ බැවින්, කේතය ක්රියාත්මක වීම කොන්දේසිය තුළට ඇතුළු නොවන බව එයින් අදහස් වේ. අපි ස්වකීය ඇසින් බලමු අපි සංසන්දනය කරන්නේ මොනවාද යන්න:
javascriptlet arr = ['21', '32', '34', '43', '45', '54', '55'];
let sum = 0;
for (let elem of arr) {
console.log(elem[0], elem[1] + 1); // '2' සහ '11', '3' සහ '21' ...
if (elem[0] === elem[1] + 1) {
sum += elem;
}
}
console.log(sum);
ප්රතිඵලයක් ලෙස, දෙවන එකතු කිරීම ඉලක්කම් දෙකක් බව වහාම දෘශ්යමාන වේ. එයට හේතුව එකක් නූලක් ලෙස එකතු කරන බව තේරුම් ගැනීම පහසුය. ගැටලුව පිළියෙල කරමු:
javascriptlet arr = ['21', '32', '34', '43', '45', '54', '55'];
let sum = 0;
for (let elem of arr) {
if (+elem[0] === +elem[1] + 1) { // පිළියෙල කරන්න
sum += elem;
}
}
console.log(sum); // '021324354'
පිළියෙල කිරීමෙන් පසු, අපි දැන් පෙනෙන්නේ
sum විචල්යයේ යමක් දිස් වී ඇති නමුත්
එය නිවැරදි නොවේ. කෙසේ වෙතත්, එහි අපට
අවශ්ය දේ පවතින නමුත් එය සංඛ්යා
වෙනුවට නූල් ලෙස එකතු වී ඇති බව දකියි.
ගැටලුව පිළියෙල කරමු:
javascriptlet arr = ['21', '32', '34', '43', '45', '54', '55'];
let sum = 0;
for (let elem of arr) {
if (+elem[0] === +elem[1] + 1) {
sum += +elem; // පිළියෙල කරන්න
}
}
console.log(sum); // සියල්ල ක්රියාත්මක වේ
පහත දක්වා ඇති කේතයේ සිදු කර ඇති දෝෂ පිළියෙල කරන්න:
javascriptlet obj = {a: 10, b: 20, c: 30, d: 40, e: 50};
let sum = 0;
for (let elem in obj) {
if (elem[0] === '1' && elem[0] === '2') {
sum += +elem;
}
}
console.log(sum);