შესვლა

პროგრამირების საფუძვლები › დამწყები › მასივები

ხშირი ამოცანები მასივზე

საშუალო⏱ 8 წთ+20 XP👑 Pro#მასივები#მაქსიმუმი#ძებნა#დათვლა

რას ისწავლი

  • როგორ იპოვო მასივში ყველაზე დიდი მნიშვნელობა
  • როგორ დათვალო ან იპოვო პირობის შესაბამისი ელემენტები
  • როგორ ააწყო ახალი მასივი ძველის საფუძველზე

ხუთი შაბლონი

მასივებთან მუშაობის ამოცანები უსასრულოდ მრავალფეროვანი ჩანს, მაგრამ უმეტესობა რამდენიმე ერთსა და იმავე შაბლონზეა აგებული. თუ ამ შაბლონებს ისწავლი, ახალ ამოცანაში მათ მაშინვე იცნობ. ყველა მაგალითში ერთ მასივს გამოვიყენებთ:

JavaScript
let scores = [72, 95, 58, 88, 41, 95];

1. დაგროვება: ჯამი

დამგროვებელი ციკლის წინ იქმნება და ყოველ ელემენტზე იზრდება. ეს შაბლონი უკვე იცი:

JavaScript
let scores = [72, 95, 58, 88, 41, 95];
let sum = 0;
for (const s of scores) {
  sum += s;
}
console.log(sum);   // 449

2. მაქსიმუმი

ყველაზე დიდის საპოვნელად დაიწყე პირველი ელემენტით, როგორც „ჯერჯერობით საუკეთესოთი“, და ყოველი შემდეგი შეადარე მას. თუ უკეთესი იპოვე, ჩაანაცვლე:

JavaScript
let scores = [72, 95, 58, 88, 41, 95];
let max = scores[0];
for (const s of scores) {
  if (s > max) {
    max = s;
  }
}
console.log(max);   // 95

რატომ scores[0] და არა 0? თუ ყველა რიცხვი უარყოფითია, მაგალითად ტემპერატურები ზამთარში, 0 „გაიმარჯვებდა“, თუმცა სიაში არ არის. პირველი ელემენტით დაწყება ყოველთვის სწორია. მინიმუმიც ასევე იძებნება, მხოლოდ <-ით.

3. დათვლა

რამდენი ელემენტი აკმაყოფილებს პირობას? მთვლელი ნულიდან იწყება და იზრდება მხოლოდ მაშინ, როცა პირობა სრულდება:

JavaScript
let scores = [72, 95, 58, 88, 41, 95];
let passed = 0;
for (const s of scores) {
  if (s >= 60) {
    passed++;
  }
}
console.log(passed);   // 4

4. ძებნა

გინდა პირველი ელემენტი, რომელიც პირობას აკმაყოფილებს? ციკლი გაიარე და პოვნისთანავე გაჩერდი break-ით. თუ ვერ იპოვე, შედეგი undefined დარჩება:

JavaScript
let scores = [72, 95, 58, 88, 41, 95];
let firstFail;
for (const s of scores) {
  if (s < 60) {
    firstFail = s;
    break;
  }
}
console.log(firstFail);   // 58

თუ მხოლოდ „არის თუ არა“ გაინტერესებს კონკრეტული მნიშვნელობისთვის, includes საკმარისია.

5. ახალი მასივის აწყობა

ზოგჯერ შედეგი თვითონ მასივია: მაგალითად, მხოლოდ ჩაბარებული ქულები. შექმენი ცარიელი მასივი და push-ით ჩაამატე საჭირო ელემენტები:

JavaScript
let scores = [72, 95, 58, 88, 41, 95];
let good = [];
for (const s of scores) {
  if (s >= 60) {
    good.push(s);
  }
}
console.log(good);   // [72,95,88,95]

თავდაპირველი მასივი უცვლელი რჩება. ასე შეგიძლია ახალ მასივში ელემენტები გარდაქმნაც: doubled.push(s * 2). შემდეგ დონეზე ისწავლი ჩაშენებულ მეთოდებს (filter, map), რომლებიც ზუსტად ამას აკეთებს ერთ ხაზში, მაგრამ მათი შინაარსი ის ციკლია, რომელიც ახლა დაწერე.

სცადე თავად

გაუშვი, მერე დაამატე მინიმუმის პოვნა და დაბეჭდე ყველაზე დაბალი ქულა.

JavaScript · სცადე თავად

ხშირი შეცდომები

  • მაქსიმუმის დაწყება 0-ით. უარყოფითი რიცხვების მასივზე არასწორ პასუხს იძლევა. დაიწყე arr[0]-ით.
  • მთვლელი ან დამგროვებელი ციკლში. თუ let passed = 0; ციკლის შიგნითაა, ის ყოველ იტერაციაზე ნულდება.
  • მასივის შეცვლა გავლისას. ელემენტების წაშლა იმ მასივიდან, რომელსაც ციკლი გადის, ინდექსებს არევს და ელემენტებს გამოტოვებს. ახალი მასივი ააწყე.

სავარჯიშო

მასივში temps = [3, -2, 5, -7, 0, 4] კვირის ტემპერატურებია. იპოვე ყველაზე ცივი დღის ტემპერატურა და დათვალე, რამდენი დღე იყო ნულზე დაბლა. უნდა დაიბეჭდოს ყველაზე ცივი: -7 და ყინვიანი დღე: 2.

JavaScript · სცადე თავად
💡 მინიშნება

მინიმუმი: დაიწყე temps[0]-ით და ჩაანაცვლე, თუ t < min. დათვლა: გაზარდე მთვლელი, თუ t < 0.

✅ ამოხსნის ნახვა
JavaScript
let temps = [3, -2, 5, -7, 0, 4];
let min = temps[0];
let frosty = 0;

for (const t of temps) {
  if (t < min) {
    min = t;
  }
  if (t < 0) {
    frosty++;
  }
}

console.log("ყველაზე ცივი:", min);
console.log("ყინვიანი დღე:", frosty);

მინი-ქვიზი

1რატომ ვიწყებთ მაქსიმუმის ძებნას arr[0]-ით და არა 0-ით?

2რას დაბეჭდავს? let c = 0; for (const x of [5, 12, 8, 20]) { if (x > 10) c++; } console.log(c);

3რას დაბეჭდავს? let r = []; for (const x of [1, 2, 3]) { r.push(x * 10); } console.log(r);

შეჯამება

  • ჯამი: დამგროვებელი ციკლის წინ, ზრდა ციკლში.
  • მაქსიმუმი და მინიმუმი: დაიწყე პირველი ელემენტით და ჩაანაცვლე უკეთესით.
  • დათვლა: მთვლელი იზრდება მხოლოდ პირობის შესრულებისას.
  • ძებნა: პოვნისთანავე break. ახალი მასივი: ცარიელი მასივი და push.
📝 ჩემი შენიშვნა