Vidokezo vya Kurekebisha Msimbo Kwa kutumia Mifano ya Vitendo katika JavaScript
Sasa nitakufundisha mbinu ya kutafuta makosa katika msimbo. Hebu tuwakilishe kwamba kwa sababu fulani hukufuata vidokezo kutoka kwenye somo lilopita na ukapata msimbo usiofanya kazi. Hebu tuone jinsi ya kutafuta makosa na kufanya ufanye kazi.
Wanaoanza wengi hutumia mbinu isiyofaa ya utafutaji. Wanachukua na kuangalia msimbo, kwa matumaini, kwamba wataona hitilafu. Na hivyo kwa masaa kadhaa. Haiwii kazi hivyo.
Mbinu sahihi ni kutoa anuwai kwenye koni na kuamua, iko huko, inahitajika, au la. Wakati huo huo, unahitaji kuanza kutoka kwa eneo linalodhaniwa la shida na kusonga juu ya msimbo. Hebu tuangalie kwa vitendo.
Hebu kwa mfano mbele yako kulikuwa na kazi ya kukagua safu na nambari za tarakimu mbili na kupata nambari ambazo Tarakimu ya kwanza ni moja zaidi ya ya pili. Hebu kwa urahisi kwenye safu kuhifadhiwa nambari kwa mfumo wa nyuzi.
Hebu umetatua tatizo na kupata msimbo ufuatao:
let 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); // inatoa 0
Msimbo, hata hivyo, inatoa 0. Katika hili
kesi ya kwanza unahitaji kuangalia,
tunaona nini katika kutofautiana
kukosa kutekeleza msimbo katika if.
Wacha tuonyeshe kitu kwenye koni:
let arr = ['21', '32', '34', '43', '45', '54', '55'];
let sum = 0;
for (let elem of arr) {
if (elem[0] === elem[1] + 1) {
console.log('!'); // hatoi chochote
sum += elem;
}
}
console.log(sum);
Kwa kuwa hakuna kitu kilichoonekana kwenye koni, Hii inamaanisha kuwa utekelezaji wa msimbo tu hauingii kwenye hali. Hebu tuangalie kwa macho yetu wenyewe, tunalinganisha nini:
let arr = ['21', '32', '34', '43', '45', '54', '55'];
let sum = 0;
for (let elem of arr) {
console.log(elem[0], elem[1] + 1); // '2' na '11', '3' na '21' ...
if (elem[0] === elem[1] + 1) {
sum += elem;
}
}
console.log(sum);
Kama matokeo, inakuwa wazi mara moja, kwamba neno la pili la tarakimu mbili. Ni rahisi kuelewa kuwa hii ni kwa sababu, kwamba moja inaongezwa kama mnyororo. Wacha tusahihishe shida:
let arr = ['21', '32', '34', '43', '45', '54', '55'];
let sum = 0;
for (let elem of arr) {
if (+elem[0] === +elem[1] + 1) { // tunarekebisha
sum += elem;
}
}
console.log(sum); // '021324354'
Baada ya kusahihisha, tayari tunaona kwamba
katika kutofautiana sum kitu kimeonekana,
ingawa sio sahihi. Inaonekana, hata hivyo,
kwamba kuna kile tunachohitaji,
lakini kilichokusanywa kwa namna ya nyuzi,
sio nambari. Wacha tusahihishe shida:
let arr = ['21', '32', '34', '43', '45', '54', '55'];
let sum = 0;
for (let elem of arr) {
if (+elem[0] === +elem[1] + 1) {
sum += +elem; // tunarekebisha
}
}
console.log(sum); // yote inafanya kazi
Sahihisha makosa, yaliyofanyika katika msimbo ufuatao:
let 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);