เป็นปัญหาที่รู้จักดีว่าเมื่อใช้ includes() ภายในอาร์เรย์ซ้อน (multidimensional array) มันไม่ทำงาน มีฟังก์ชัน Array.prototype.flat() ที่แบนอาร์เรย์แล้วค้นหา แต่การรองรับเบราว์เซอร์ยังไม่ค่อยดี
หน้าที่คือสร้างฟังก์ชัน includesMultiDimension() ที่รับอาร์เรย์และสตริง คืนค่า boolean ตามการมี/ไม่มีของสตริงนั้นในอาร์เรย์
มีหลายวิธีแก้ รובם ใช้ recursion, ฟังก์ชันอาร์เรย์หนัก, ลูป ฯลฯ
สิ่งที่เราจะพูดถึงนี้เป็นวิธีที่ง่ายที่สุดในการตรวจสอบการมี/ไม่มีของสตริงในอาร์เรย์ซ้อน
โค้ดคือ
ตัวอย่าง
const names = ['Ram', 'Shyam', 'Laxman', [
'Jay', 'Jessica', [
'Vikram'
]
]];
const includesMultiDimension = (arr, str) => JSON.stringify(arr).includes(str);
console.log(includesMultiDimension(names, 'Vikram'));
วิธีหนึ่งบรรทัดนี้ รวมถึงการแปลงอาร์เรย์เป็นสตริง JSON เพื่อให้เราสามารถใช้ includes ได้โดยตรง
ผลลัพธ์
ผลลัพธ์ในคอนโซลจะเป็น
True