Chúng ta cần viết hàm JavaScript nhận vào mảng các mảng số làm đối số đầu tiên và mảng số làm đối số thứ hai. Hàm chọn mảng con từ mỗi mảng của mảng đầu tiên (mảng con chứa phần tử chung giữa mảng thứ hai và mảng tương ứng của mảng đầu tiên).
Ví dụ:
Nếu đầu vào là:
Ví dụ
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];
Kết quả
Kết quả in ra console:
const output = [ [1, 2, 5, 6], [5, 13], [9, 11, 13, 15], [13, 15], [1, 9, 11] ]
Phần tử chung giữa mảng con đầu tiên của mảng đầu tiên và mảng thứ hai tạo thành mảng con đầu tiên của mảng đầu ra.
Phần tử chung giữa mảng con thứ hai của mảng đầu tiên và mảng thứ hai tạo thành mảng con thứ hai của mảng đầu ra. Và cứ thế.
Ví dụ
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));Kết quả
Kết quả in ra console:
[ [ 1, 2, 5, 6 ], [ 5, 13 ], [ 9, 11, 13, 15 ], [ 13, 15 ], [ 1, 9, 11 ] ]