ภาพรวม
เราต้องเขียนฟังก์ชันที่รับอาร์เรย์ของอาร์เรย์ตัวเลขเป็นอาร์กิวเมนต์แรก และอาร์เรย์ตัวเลขเป็นอาร์กิวเมนต์ที่สอง ฟังก์ชันควรเลือกซับอาร์เรย์จากแต่ละอาร์เรย์ของอาร์เรย์แรก (ซับอาร์เรย์ที่มีรายการร่วมกับอาร์เรย์ที่สอง)
ตัวอย่าง
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 ]
]