Computer >> Máy Tính >  >> Lập trình >> Javascript

Hàm JavaScript nhận đa chiều và một mảng đơn, đồng thời tìm các kết quả phù hợp của mảng đơn trong mảng nhiều d

Chúng tôi được yêu cầu viết một hàm JavaScript lấy một mảng các Số làm đối số đầu tiên và một mảng Numbers làm đối số thứ hai. Hàm phải chọn một mảng con từ mỗi mảng của mảng đầu tiên, (mảng con chứa mục chung cho cả 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];

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

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

Các phần tử chung giữa mảng con đầu tiên của mảng thứ nhất và mảng thứ hai tạo thành mảng con đầu tiên của mảng đầu ra.

Các phần tử chung giữa mảng con thứ hai của mảng thứ nhất và mảng thứ hai tạo thành mảng con thứ hai của mảng đầu ra. Và như vậy.

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));

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

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