Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

ฟังก์ชัน JavaScript ที่ใช้อาร์เรย์หลายมิติและอาร์เรย์เดียว และค้นหาการจับคู่ของอาร์เรย์เดียวในอาร์เรย์หลายมิติ


เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของอาร์เรย์ Numbers เป็นอาร์กิวเมนต์แรกและอาร์เรย์ Numbers เป็นอาร์กิวเมนต์ที่สอง ฟังก์ชันควรเลือกอาร์เรย์ย่อยจากอาร์เรย์ของอาร์เรย์แรก (subarray ที่มีรายการร่วมกันของทั้งอาร์เรย์ที่สองและอาร์เรย์ที่ตรงกันของอาร์เรย์แรก)

ตัวอย่างเช่น −

หากอินพุตเป็น −

ตัวอย่าง

const arr1 = [
[1,2,5,6],
[5,13,7,8],
[9,11,13,15],
[13,14,15,16],
[1,9,11,12]
];
const arr2 = [9,11,13,15,1,2,5,6];

ผลลัพธ์

และผลลัพธ์ในคอนโซลจะเป็น −

const output = [
[1, 2, 5, 6],
[5, 13],
[9, 11, 13, 15],
[13, 15],
[1, 9, 11]
]

องค์ประกอบทั่วไประหว่างอาร์เรย์ย่อยแรกของอาร์เรย์ที่หนึ่งและอาร์เรย์ที่สองจะสร้างอาร์เรย์ย่อยแรกของอาร์เรย์เอาต์พุต

องค์ประกอบทั่วไประหว่างอาร์เรย์ย่อยที่สองของอาร์เรย์ที่หนึ่งและอาร์เรย์ที่สองจะสร้างอาร์เรย์ย่อยที่สองของอาร์เรย์เอาต์พุต เป็นต้น

ตัวอย่าง

const arr1 = [
[1,2,5,6],
[5,13,7,8],
[9,11,13,15],
[13,14,15,16],
[1,9,11,12]
];
const arr2 = [9,11,13,15,1,2,5,6];
const findIntersection = (arr1 = [], arr2 = []) => {
   const regex = new RegExp('\\b(' + arr1.join('|') + ')\\b', 'g');
   const res = [];    
   arr2.forEach(arr => {
      let matches = arr.join(' ').match(regex);
      if (matches.length) {          
         res.push(matches.map(Number));
      };
   });
   return res;
}
console.log(findIntersection(arr2, arr1));

ผลลัพธ์

และผลลัพธ์ในคอนโซลจะเป็น −

[
   [ 1, 2, 5, 6 ],
   [ 5, 13 ],
   [ 9, 11, 13, 15 ],
   [ 13, 15 ],
   [ 1, 9, 11 ]
]