一个 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 次查看

启动你的 职业生涯

通过完成课程获得认证

开始
广告