一個 JavaScript 函式,它接收一個多維陣列和一個一維陣列作為引數,並查詢一維陣列在多維陣列中的匹配項。


我們需要編寫一個 JavaScript 函式,該函式接收一個數字陣列的陣列作為第一個引數,並接收一個數字陣列作為第二個引數。該函式應該從第一個陣列的每個陣列中選擇一個子陣列(包含第二個陣列和第一個陣列相應陣列的公共項的子陣列)。

例如 -

如果輸入為 -

示例

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 ]
]

更新於: 2020年11月21日

88 次檢視

啟動你的 職業生涯

透過完成課程獲得認證

開始
廣告

© . All rights reserved.