JavaScript да цикларида кодни дев қилиш бўйича маслиҳатлар
Ҳозир мен сизга коддаги хатоларни топусу́ методикасини ўргатаман. Фараз қилайлик, сиз қандайдир нотўғри тушунча сабаби ўтган дарсдаги маслиҳатларга амал қилмадингиз ва ишламайдиган код олдингиз. Келинг, хатоларни қандай топиб уни ишлатишни кўрайлик.
Кўп ёш бошланғичлар но́тўғри қидирув методикасидан фойдаланадилар. Улар олиб, кодга қарашадилар, хатоликни пайқай оличанмиз деган умидда. Ва шундай қилиб бир неча соат. Бу хатоларни топишнинг тўғри усули эмас.
Тўғри методика - ўзгарувчиларни консолга чиқариб, керакли нарса у ерда ётқанми ёки йўқми, аниқлашдир. Бунда бошлаш керак муаммо бўлгани гумон қилинадиган жойдан ва код бўйилаб юқорига қараб ҳаракат қилиш керак. Келинг, амалда кўрамиз.
Мисол учун фараз қилайлик, сизнинг олдингизда икки хонали сонлар тўпламини такрорлаб чиқиш ва биринчи рақами иккинчисидан битта катта бўлган сонларни топис̧ вазифаси турсин. Соддалик учун тўпламда сонлар сатр кўринишида сақлансин.
Фараз қилайлик, сиз вазифани ечиб, куйидаги кодни олдингиз:
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); // 0 ни кўрсатади
Аммо код 0 ни кўрсатади.
Бунда биринчи бўлиб, текшириш керак,
код ифнинг ичига кирадими ёки йўқми.
Унинг ичида консолга бирор нарса чиқарайлик:
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('!'); // ҳеч нарса чиқармайди
sum += elem;
}
}
console.log(sum);
Консольда ҳеч нарса пайдо бўлмагани сабабли, бу коднинг ишлаши шартнинг ичига ҳеч кирмайди, дегани. Кўз билан кўрамиз, нимани соли́йсйштирмоқдамиз:
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' ва '11', '3' ва '21' ...
if (elem[0] === elem[1] + 1) {
sum += elem;
}
}
console.log(sum);
Натижада дароқ кўриниб қоладики, иккинчи қўшилувчи икки хонали. Бу бирлик сатр сифатида қўшилгани сабабли, деганини тушуниш осон. Муаммони тўғрилаймиз:
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); // '021324354'
Тўғрилагандан сўнг биз кўрамизки,
sum ўзгарувчисида нарса пайдо бўлди,
агар ҳам нотўғри бўлса-да.
Аммо кўриниб турибдики, у ерда бизга керакли нарса ётган,
лекин у сонлар кўринишида эмас, балки сатрлар кўринишида қўшилган.
Муаммони тўғрилаймиз:
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); // ҳаммаси ишлайди
Куйидаги кодда қилган хатоларингизни тўғриланг:
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);