⊗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
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否