პროგრამირების საფუძვლები › დამწყები › მასივები
დამატება და წაშლა
ეს თავი CodeQuest Pro-ს ნაწილია
Pro ხსნის სკოლის ყველა კურსს და თამაშის ყველა ლეველს, ვიდეოს და პროექტს. ერთჯერადი გადახდა, გამოწერის გარეშე.
რას ისწავლი
- როგორ დაამატო და წაშალო ელემენტი მასივის ბოლოში და დასაწყისში
- როგორ წაშალო ელემენტი შუიდან, მისი ადგილის მიხედვით
- როგორ შეამოწმო, არის თუ არა მნიშვნელობა მასივში და სად
მასივის მეთოდები
მასივს თავისი ჩაშენებული ფუნქციები აქვს, რომლებიც წერტილით იძახება: fruits.push(...). ასეთ ფუნქციას მეთოდი (method) ჰქვია: ის ერთ კონკრეტულ მასივზე მუშაობს, იმაზე, რომლის სახელიც წერტილის წინ წერია. ამ თავის მეთოდები მასივს ცვლის: ახალ მასივს არ ქმნის, არამედ არსებულს ამატებს ან აკლებს.
ბოლოში: push და pop
push ბოლოში ამატებს, pop ბოლოდან იღებს:
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 თავიდან იღებს. ეს ზუსტად მაღაზიის რიგია: ახალი მომხმარებელი ბოლოში დგება, მომსახურება კი პირველს ეკუთვნის.
let queue = ["ანა", "გიო"];
queue.push("ლუკა"); // ახალი რიგის ბოლოში
let served = queue.shift(); // პირველს ემსახურებიან
console.log(served); // ანა
console.log(queue); // ["გიო","ლუკა"]შუიდან: splice
შუიდან წასაშლელად გამოიყენე splice(ინდექსი, რამდენი). ის იწყებს მითითებულ ინდექსზე და შლის იმდენ ელემენტს, რამდენიც მიუთითე:
let letters = ["ა", "ბ", "გ", "დ"];
letters.splice(1, 2);
console.log(letters); // ["ა","დ"]ინდექსიდან 1 წაიშალა ორი ელემენტი, „ბ“ და „გ“. დანარჩენები მარცხნივ გადაიწია, ამიტომ „დ“-ს ინდექსი ახლა 1-ია.
არის თუ არა სიაში
ხშირად საჭიროა კითხვა: „ეს მნიშვნელობა მასივშია?“. includes აბრუნებს true-ს ან false-ს, indexOf კი ელემენტის ინდექსს, ან -1-ს, თუ ვერ იპოვა:
let guests = ["ნინო", "დათო", "მარი"];
console.log(guests.includes("დათო")); // true
console.log(guests.includes("გიო")); // false
console.log(guests.indexOf("მარი")); // 2
console.log(guests.indexOf("გიო")); // -1const და მასივი
თუ მასივი const-ით შექმენი, მისი შიგთავსის შეცვლა მაინც შეიძლება: push და pop იმუშავებს. const კრძალავს მხოლოდ ცვლადისთვის სულ სხვა მასივის მინიჭებას: guests = []. ამიტომ ბევრი პროგრამისტი მასივებს const-ით ქმნის.
სცადე თავად
გაუშვი, მერე დაამატე კიდევ ორი მომხმარებელი და მოემსახურე კიდევ ერთს. ვინ დარჩა რიგში?
ხშირი შეცდომები
pushცარიელ ფრჩხილებში.arr.push()არაფერს ამატებს. დასამატებელი მნიშვნელობა ფრჩხილებში ჩაწერე.indexOf-ის შედეგის შემოწმება როგორც true/false.if (arr.indexOf(x))არასწორია: ინდექსი 0 false-ად ითვლება, -1 კი true-დ. „არის თუ არა“ კითხვისთვისincludesგამოიყენე.- ინდექსების წანაცვლება.
splice-ის ანshift-ის შემდეგ დანარჩენი ელემენტების ინდექსები იცვლება. ძველ ინდექსს ნუ ენდობი.
სავარჯიშო
საყიდლების სია list = ["პური", "რძე"]. დაამატე ბოლოში "კვერცხი", თავში "ყველი", მერე შეამოწმე, არის თუ არა სიაში "რძე", და დაბეჭდე სია. უნდა მიიღო true და ["ყველი","პური","რძე","კვერცხი"].
💡 მინიშნება
ბოლოში list.push("კვერცხი"), თავში list.unshift("ყველი"), შემოწმება list.includes("რძე").
✅ ამოხსნის ნახვა
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);
push ბოლოში ერთ ელემენტს ამატებს.
2რას აბრუნებს pop()?
pop ბოლო ელემენტს შლის და აბრუნებს.
3რას აბრუნებს ["ა", "ბ"].indexOf("გ")?
-1 ნიშნავს „ვერ ვიპოვე“.
შეჯამება
pushბოლოში ამატებს,popბოლოდან შლის და აბრუნებს.unshiftთავში ამატებს,shiftთავიდან შლის და აბრუნებს.splice(ინდექსი, რამდენი)შუიდან შლის.includesგეუბნება, არის თუ არა მნიშვნელობა სიაში,indexOfსად არის, ან -1.