⊗jsPmRcMS 278 of 505 menu

რეკურსია და მრავალგანზომილებიანი სტრუქტურები JavaScript-ში

მოცემულია მრავალგანზომილებიანი მასივი თვითნებური დონის ბუდობით, მაგალითად, ასეთი:

let arr = [ 1, [ 2, 7, 8 ], [ 3, 4, [5, [6, 7]], ] ];

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

დავუშვათ, გვსურს კონსოლში გამოვიტანოთ ყველა პრიმიტიული (ანუ, არა-მასივები) ელემენტი ჩვენი მასივის. ამ შემთხვევაში, ასეთი მასივის გადასარჩევად ჩვენ უბრალოდ ვერ გამოვიყენებთ ციკლებს, რადგან მასივს აქვს არარეგულარული სტრუქტურა და უცნობი ბუდობის დონე.

მაგრამ ასეთი მასივის გადარჩევისთვის ძალიან მოსახერხებელი იქნება რეკურსიის გამოყენება.

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

function func(arr) { for (let elem of arr) { console.log(elem); } } func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]);

ჩვენს მიერ შექმნილი ციკლი გადაარჩევს მხოლოდ მთავარი მასივის ელემენტებს. ანუ, თავიდან ის გამოიტანს 1, შემდეგ [2, 7, 8], და შემდეგ [3, 4, [5, [6, 7]].

ახლა მოდით, ციკლში გავყოთ ელემენტები-პრიმიტივები და ელემენტები-მასივები:

function func(arr) { for (let elem of arr) { if (typeof elem == 'object') { // ელემენტი - მასივი } else { // ელემენტი - პრიმიტივი console.log(elem); } } } func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]);

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

function func(arr) { for (let elem of arr) { if (typeof elem == 'object') { func(elem); } else { console.log(elem); } } } func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]);

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

{a: 1, b: {c: 2, d: 3, e: 4}, f: {g: 5, j: 6, k: {l: 7, m: {n: 8, o: 9}}}}

რეკურსიის გამოყენებით გამოიტანეთ ყველა პრიმიტიული ელემენტი ამ ობიექტის კონსოლში.

მოცემულია მრავალგანზომილებიანი მასივი თვითნებური დონის ბუდობით, მაგალითად, ასეთი:

[1, [2, 7, 8], [3, 4, [5, [6, 7]]]]

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

[1, 2, 7, 8, 3, 4, 5, 6, 7]
ქართული
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語Қазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
ვებსაიტის მუშაობის, ანალიტიკისა და პერსონალიზაციისთვის ვიყენებთ ქუქი-ფაილებს. მონაცემთა დამუშავება ხდება Კონფიდენციალურობის პოლიტიკის შესაბამისად.
ყველას მიღება პარამეტრები უარყოფა