Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

JavaScript array.includes ในอาร์เรย์ซ้อนคืนค่า false แม้ชื่อที่ค้นหาอยู่ในอาร์เรย์

เป็นปัญหาที่รู้จักดีว่าเมื่อใช้ 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