Js მრავალგანზომილებიანი მასივები. მრავალგანზომილებიანი მასივები JavaScript-ში. I. გამეორება რეალურ მასივებზე

  • I. გამეორება რეალურ მასივებზე
  • თითოეული მეთოდისთვის და მასთან დაკავშირებული მეთოდებისთვის
  • მარყუჟისთვის
  • მარყუჟის for...in-ის სწორად გამოყენება
  • for... of loop (იტერატორის ფარული გამოყენება)
  • იტერატორის აშკარა გამოყენება
  • რეალური მასივების გამეორების მეთოდების გამოყენება
  • გადაიყვანეთ რეალურ მასივში
  • შენიშვნა გაშვების ობიექტებზე
I. გამეორება რეალურ მასივებზე ამ დროისთვის, არსებობს რეალური მასივის ელემენტებზე გამეორების სამი გზა:
  • მეთოდი Array.prototype.forEach;
  • კლასიკური მარყუჟისთვის
  • "სწორად" აგებული... მარყუჟში.
  • გარდა ამისა, მალე, ახალი ECMAScript 6 (ES 6) სტანდარტის მოსვლასთან ერთად, მოსალოდნელია კიდევ ორი ​​მეთოდი:
  • for...of loop (იტერატორის იმპლიციტური გამოყენება);
  • იტერატორის აშკარა გამოყენება.
  • 1. ForEach მეთოდი და მასთან დაკავშირებული მეთოდები თუ თქვენი პროექტი შექმნილია ECMAScript 5 (ES5) სტანდარტის მახასიათებლების მხარდასაჭერად, შეგიძლიათ გამოიყენოთ მისი ერთ-ერთი ინოვაცია - forEach მეთოდი.

    გამოყენების მაგალითი:
    var a = ["ა", "ბ", "გ"]; a.forEach(function(entry) ( console.log(entry); ));
    ზოგადად, forEach-ის გამოყენება მოითხოვს es5-shim ემულაციის ბიბლიოთეკის დაკავშირებას ბრაუზერებისთვის, რომლებიც არ უჭერენ მხარს ამ მეთოდს. მათ შორისაა IE 8 და უფრო ადრე, რომლებიც ჯერ კიდევ გამოიყენება ზოგიერთ ადგილას.

    forEach-ის უპირატესობა ის არის, რომ არ არის საჭირო ლოკალური ცვლადების გამოცხადება მიმდინარე მასივის ელემენტის ინდექსისა და მნიშვნელობის შესანახად, ვინაიდან ისინი ავტომატურად გადაეცემა გამოძახების ფუნქციას, როგორც არგუმენტები.

    თუ თქვენ გაწუხებთ თითოეულ ელემენტზე გამოძახების შესაძლო ღირებულება, არ ინერვიულოთ და წაიკითხეთ ეს.

    ForEach შექმნილია მასივის ყველა ელემენტის გამეორებისთვის, მაგრამ გარდა ამისა, ES5 გთავაზობთ კიდევ რამდენიმე სასარგებლო მეთოდს ყველა ან ზოგიერთ ელემენტში გამეორებისთვის და მათზე გარკვეული მოქმედებების შესრულება:

    • every - აბრუნებს true თუ მასივის თითოეული ელემენტისთვის გამოძახება აბრუნებს მნიშვნელობას, რომელიც შეიძლება გარდაიქმნას true-ში.
    • some - აბრუნებს true, თუ მასივის მინიმუმ ერთი ელემენტისთვის გამოძახება აბრუნებს მნიშვნელობას, რომელიც შეიძლება გარდაიქმნას true-ში.
    • filter - ქმნის ახალ მასივს, რომელიც მოიცავს ორიგინალური მასივის იმ ელემენტებს, რომლებისთვისაც გამოძახება აბრუნებს true.
    • რუქა - ქმნის ახალ მასივს, რომელიც შედგება გამოძახებით დაბრუნებული მნიშვნელობებისაგან.
    • შემცირება - ამცირებს მასივს ერთ მნიშვნელობამდე, მიმართავს მასივის თითოეულ ელემენტს რიგრიგობით, პირველიდან დაწყებული (შეიძლება სასარგებლო იყოს მასივის ელემენტების ჯამის და სხვა შემაჯამებელი ფუნქციების გამოსათვლელად).
    • reduceRight - მუშაობს ისევე, როგორც შემცირება, მაგრამ მეორდება ელემენტების მეშვეობით საპირისპირო თანმიმდევრობით.
    2. მარყუჟისთვის კარგი ძველი წესებისთვის:

    Var a = ["a", "b", "c"]; var ინდექსი; for (ინდექსი = 0; ინდექსი< a.length; ++index) { console.log(a); }
    თუ მასივის სიგრძე მარყუჟის განმავლობაში მუდმივია და თავად მარყუჟი ეკუთვნის კოდის შესრულების კრიტიკულ განყოფილებას (რაც ნაკლებად სავარაუდოა), მაშინ შეგიძლიათ გამოიყენოთ "უფრო ოპტიმალური" ვერსია, რომელიც ინახავს მასივის სიგრძეს. :

    Var a = ["a", "b", "c"]; var ინდექსი, len; for (ინდექსი = 0, len = a.სიგრძე; ინდექსი< len; ++index) { console.log(a); }
    თეორიულად, ეს კოდი წინაზე ცოტა უფრო სწრაფად უნდა მუშაობდეს.

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

    Var a = ["a", "b", "c"]; var ინდექსი; for (index = a.length - 1; index >= 0; --index) (consol.log(a); )
    თუმცა, თანამედროვე JavaScript ძრავებში ასეთი ოპტიმიზაციის თამაშები ჩვეულებრივ არაფერს ნიშნავს.

    3. for...in loop-ის სწორი გამოყენება თუ გირჩევთ გამოიყენოთ for...in loop, გახსოვდეთ, რომ მასივების გამეორება არ არის ის, რისთვისაც ის არის განკუთვნილი. გავრცელებული მცდარი წარმოდგენის საწინააღმდეგოდ, for...in ციკლი არ იმეორებს მასივის ინდექსებს, არამედ ობიექტის უთვალავი თვისებების მეშვეობით.

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

    // a - მწირი მასივი var a = ; a = "a"; a = "ბ"; a = "c"; for (var key in a) ( if (a.hasOwnProperty(key) && /^0$|^\d*$/.test(key) && key

    გაქვთ შეკითხვები?

    შეატყობინეთ შეცდომას

    ტექსტი, რომელიც გაეგზავნება ჩვენს რედაქტორებს: