⊗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
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне