JavaScript 函数接受一个多维数组和一个单数组,并在多维数组中查找单数组的匹配项

javascriptweb developmentfront end technologyobject oriented programming

我们需要编写一个 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 ]
]

相关文章