⊗jsPmRcMS 278 of 505 menu

Recursion and Multidimensional Structures in JavaScript

กำหนดให้มีอาร์เรย์หลายมิติที่มีระดับความซ้อนภายในไม่แน่นอน ตัวอย่างเช่น:

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

ดังที่คุณเห็น อาร์เรย์นี้มีโครงสร้างที่ซับซ้อน และคาดว่าโครงสร้างนี้อาจจะเป็นแบบใดก็ได้ และระดับ ความซ้อนอาจจะมีได้หลายระดับตามต้องการ

สมมติว่าเราต้องการแสดงผลค่าแบบ primitive (ซึ่งไม่ใช่อาร์เรย์) ทุกตัวของอาร์เรย์ของเราในคอนโซล ในกรณีนี้ การใช้ลูปเพื่อสำรวจอาร์เรย์นี้ จะทำได้ยาก เนื่องจากอาร์เรย์มีโครงสร้าง ที่ไม่แน่นอน และระดับความซ้อนภายในไม่ทราบล่วงหน้า

อย่างไรก็ตาม การสำรวจอาร์เรย์ลักษณะนี้ สามารถใช้ Recursion ได้อย่างสะดวก

เริ่มต้นด้วยการสร้างฟังก์ชัน ซึ่งรับพารามิเตอร์ เป็นอาร์เรย์ของเรา และภายในฟังก์ชัน เราจะสร้างลูปเพื่อสำรวจอาร์เรย์ของเรา:

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]]].

ตอนนี้เราจะเพิ่มเงื่อนไขในลูปเพื่อแยกสมาชิกที่เป็น primitive และสมาชิกที่เป็นอาร์เรย์:

function func(arr) { for (let elem of arr) { if (typeof elem == 'object') { // สมาชิกเป็นอาร์เรย์ } else { // สมาชิกเป็น primitive console.log(elem); } } } func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]);

และตอนนี้ให้ปรับปรุงโค้ดเพื่อที่ว่า หากสมาชิกนั้น เป็นอาร์เรย์ ฟังก์ชันจะเรียกตัวเอง (Recursion) โดย ส่งพารามิเตอร์เป็นอาร์เรย์นั้น:

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}}}}

ให้ใช้ Recursion เพื่อแสดงผลสมาชิกแบบ primitive ทั้งหมดของออบเจ็กต์นี้ในคอนโซล

กำหนดให้มีอาร์เรย์หลายมิติที่มีระดับความซ้อนภายในไม่แน่นอน ตัวอย่างเช่น:

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

ให้เขียนโค้ดที่แปลงอาร์เรย์หลายมิติของเรา ให้เป็นอาร์เรย์หนึ่งมิติ (flatten array) สำหรับอาร์เรย์ข้างต้น ผลลัพธ์ควรเป็นดังนี้:

[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
เราใช้คุกกี้สำหรับการทำงานของเว็บไซต์ การวิเคราะห์ และการปรับเนื้อหาให้เหมาะสมส่วนบุคคล การประมวลผลข้อมูลเกิดขึ้นตาม นโยบายความเป็นส่วนตัว.
ยอมรับทั้งหมด ปรับแต่ง ปฏิเสธ