შესვლა

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

დამატება და წაშლა

მარტივი⏱ 7 წთ+20 XP👑 Pro#მასივები#push#pop#splice#includes

რას ისწავლი

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

მასივის მეთოდები

მასივს თავისი ჩაშენებული ფუნქციები აქვს, რომლებიც წერტილით იძახება: fruits.push(...). ასეთ ფუნქციას მეთოდი (method) ჰქვია: ის ერთ კონკრეტულ მასივზე მუშაობს, იმაზე, რომლის სახელიც წერტილის წინ წერია. ამ თავის მეთოდები მასივს ცვლის: ახალ მასივს არ ქმნის, არამედ არსებულს ამატებს ან აკლებს.

ბოლოში: push და pop

push ბოლოში ამატებს, pop ბოლოდან იღებს:

JavaScript
let stack = ["წიგნი 1", "წიგნი 2"];

stack.push("წიგნი 3");
console.log(stack);    // ["წიგნი 1","წიგნი 2","წიგნი 3"]

let top = stack.pop();
console.log(top);      // წიგნი 3
console.log(stack);    // ["წიგნი 1","წიგნი 2"]

pop არა მხოლოდ შლის ბოლო ელემენტს, არამედ აბრუნებს მას, ამიტომ შეგიძლია ცვლადში შეინახო. push-ს რამდენიმე ელემენტის ერთად დამატებაც შეუძლია: stack.push("ა", "ბ").

ცვლადს ტყუილად არ დავარქვით stack. სტეკი (stack) წიგნების დასტას ჰგავს: ახალ წიგნს ზემოდან დებ და აღებაც მხოლოდ ზემოდან შეგიძლია, ბოლოს დადებული პირველი გამოდის. push და pop ზუსტად ასე მუშაობს. სტეკი პროგრამირების ერთ-ერთი მთავარი იდეაა: ასე მუშაობს, მაგალითად, „უკან დაბრუნების“ ღილაკი რედაქტორში.

დასაწყისში: unshift და shift

იგივე მასივის დასაწყისისთვის: unshift თავში ამატებს, shift თავიდან იღებს. ეს ზუსტად მაღაზიის რიგია: ახალი მომხმარებელი ბოლოში დგება, მომსახურება კი პირველს ეკუთვნის.

JavaScript
let queue = ["ანა", "გიო"];

queue.push("ლუკა");          // ახალი რიგის ბოლოში
let served = queue.shift();  // პირველს ემსახურებიან

console.log(served);   // ანა
console.log(queue);    // ["გიო","ლუკა"]

შუიდან: splice

შუიდან წასაშლელად გამოიყენე splice(ინდექსი, რამდენი). ის იწყებს მითითებულ ინდექსზე და შლის იმდენ ელემენტს, რამდენიც მიუთითე:

JavaScript
let letters = ["ა", "ბ", "გ", "დ"];
letters.splice(1, 2);
console.log(letters);   // ["ა","დ"]

ინდექსიდან 1 წაიშალა ორი ელემენტი, „ბ“ და „გ“. დანარჩენები მარცხნივ გადაიწია, ამიტომ „დ“-ს ინდექსი ახლა 1-ია.

არის თუ არა სიაში

ხშირად საჭიროა კითხვა: „ეს მნიშვნელობა მასივშია?“. includes აბრუნებს true-ს ან false-ს, indexOf კი ელემენტის ინდექსს, ან -1-ს, თუ ვერ იპოვა:

JavaScript
let guests = ["ნინო", "დათო", "მარი"];

console.log(guests.includes("დათო"));   // true
console.log(guests.includes("გიო"));    // false
console.log(guests.indexOf("მარი"));    // 2
console.log(guests.indexOf("გიო"));     // -1

const და მასივი

თუ მასივი const-ით შექმენი, მისი შიგთავსის შეცვლა მაინც შეიძლება: push და pop იმუშავებს. const კრძალავს მხოლოდ ცვლადისთვის სულ სხვა მასივის მინიჭებას: guests = []. ამიტომ ბევრი პროგრამისტი მასივებს const-ით ქმნის.

სცადე თავად

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

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

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

  • push ცარიელ ფრჩხილებში. arr.push() არაფერს ამატებს. დასამატებელი მნიშვნელობა ფრჩხილებში ჩაწერე.
  • indexOf-ის შედეგის შემოწმება როგორც true/false. if (arr.indexOf(x)) არასწორია: ინდექსი 0 false-ად ითვლება, -1 კი true-დ. „არის თუ არა“ კითხვისთვის includes გამოიყენე.
  • ინდექსების წანაცვლება. splice-ის ან shift-ის შემდეგ დანარჩენი ელემენტების ინდექსები იცვლება. ძველ ინდექსს ნუ ენდობი.

სავარჯიშო

საყიდლების სია list = ["პური", "რძე"]. დაამატე ბოლოში "კვერცხი", თავში "ყველი", მერე შეამოწმე, არის თუ არა სიაში "რძე", და დაბეჭდე სია. უნდა მიიღო true და ["ყველი","პური","რძე","კვერცხი"].

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

ბოლოში list.push("კვერცხი"), თავში list.unshift("ყველი"), შემოწმება list.includes("რძე").

✅ ამოხსნის ნახვა
JavaScript
let list = ["პური", "რძე"];
list.push("კვერცხი");
list.unshift("ყველი");

console.log(list.includes("რძე"));
console.log(list);

მინი-ქვიზი

1რას დაბეჭდავს? let a = [1, 2]; a.push(3); console.log(a.length);

2რას აბრუნებს pop()?

3რას აბრუნებს ["ა", "ბ"].indexOf("გ")?

შეჯამება

  • push ბოლოში ამატებს, pop ბოლოდან შლის და აბრუნებს.
  • unshift თავში ამატებს, shift თავიდან შლის და აბრუნებს.
  • splice(ინდექსი, რამდენი) შუიდან შლის.
  • includes გეუბნება, არის თუ არა მნიშვნელობა სიაში, indexOf სად არის, ან -1.
📝 ჩემი შენიშვნა