roadmap.az

Menyu

JavaScript & DOMDərs 17 / 25

Problem həll etmə

Məsələni anlamaqdan başla

Birinci addım kod deyil: nə verilir, nə qaytarılmalıdır və hansı hallar mümkündür? Məsələni öz sözlərinlə yaz. Sadə, mürəkkəb, boş və etibarsız giriş üçün gözlənilən nəticəni əvvəl müəyyən et.

Məsələ: büdcəyə uyğun məhsulları seç.
Giriş: məhsullar massivi və mənfi olmayan büdcə.
Çıxış: qiyməti büdcədən böyük olmayan məhsullar.
Addımlar:
1. Büdcəni yoxla.
2. Hər məhsulun qiymətini müqayisə et.
3. Uyğun məhsullardan yeni massiv qaytar.
Nümunə
function affordable(products, budget) {
  if (!Number.isFinite(budget) || budget < 0) return [];
  return products.filter(product => product.price <= budget);
}
Nümunə

Həll et, sonra təkmilləşdir

Böyük addımı anlaya bilmirsənsə kiçik hissələrə böl. Əvvəl işləyən sadə həll yaz, sonra təkrarı, qarışıq adları və uzun funksiyaları düzəlt. Həllin düzgünlüyü ilə sürətini ayrı qiymətləndir.

Boş massiv, sıfır büdcə, dəqiq sərhəd qiyməti, bütün məhsulların baha olması və etibarsız büdcəni yoxla. Saf funksiya eyni girişə eyni nəticə verir və xarici vəziyyəti dəyişmir; belə funksiyaları ayrıca yoxlamaq asandır. Təkmilləşdirmədən sonra əvvəlki nümunələri yenidən yoxla.

Əlavə qeydlər və mənbələr

Əvvəl məsələni öz sözlərinlə yaz, giriş və çıxışı müəyyən et. Sadə, mürəkkəb, boş və etibarsız giriş nümunələrini seç, psevdokod qur, sonra həlli kiçik funksiyalarla yazıb təkmilləşdir.

Niyə vacibdir?

JavaScript istifadəçi hərəkətinə cavab verən və məlumatı emal edən səhifələr yaratmağa imkan verir.

Əvvəlki biliklər

Bu mövzuda

  • Məsələnin parçalanması
  • Sərhəd halları və psevdokod
  • Adlandırma və həllin nəzərdən keçirilməsi

Mövzuya baxış

Mənbələr

Məşqin idarəetməsi
Addım 1 / 3

Məsələnin sərhədini sına

Qiymətlər siyahısından büdcəyə uyğun olanları seç.

Hədəf: Büdcəni 12 et.

Canlı nəticə

Giriş41230
Nəticə4
Mənbə kodu
prices.filter(price => price <= 10)

Özün sına

Məhsulları büdcəyə görə seçən məsələni əvvəl kağızda həll et. Koddan əvvəl ən az dörd giriş və gözlənilən çıxış nümunəsi yaz.

Nəticəni necə yoxlayım?

Giriş-çıxış, psevdokod və ən az dörd sərhəd halı yazılıb; həll ilkin məlumatı dəyişmir.

Gözlənilən nəticə

  • Büdcə 12 olduqda hər iki məhsul, 0 olduqda yalnız pulsuz məhsul seçilir.
  • Boş siyahı və mənfi büdcə üçün nəticə boşdur.
[{"title":"Kitab","price":12},{"title":"Qələm","price":0}]
[{"title":"Qələm","price":0}]
[]
[]
Nümunə həllə bax

Əvvəl özün sına, sonra müqayisə et. Bu, mümkün həllərdən biridir.

Qayda hər məhsulu ayrıca büdcə ilə müqayisə edir; seçilən məhsulların cəminin büdcəyə sığması bu məsələnin şərti deyil.

main.js

function affordable(products, budget) {
  if (!Number.isFinite(budget) || budget < 0) return [];
  return products.filter(product => product.price <= budget);
}
const products = [{ title: 'Kitab', price: 12 }, { title: 'Qələm', price: 0 }];
const cases = [[products, 12], [products, 0], [[], 10], [products, -1]];
for (const [items, budget] of cases) console.log(JSON.stringify(affordable(items, budget)));

Praktikanı bitirdin?Özün qiymətləndirirsən. İrəliləyiş bu brauzerdə saxlanılır.