js求多维数组的任意交集
时间: 2024-04-12 19:29:25 浏览: 195
要求多维数组的任意交集,可以使用递归和 reduce() 方法来实现。下面是一个例子:
```javascript
function getIntersection(arrays) {
// 递归基,如果数组为空,则返回空数组
if (arrays.length === 0) {
return [];
}
// 取第一个数组作为初始交集
const initialIntersection = arrays[0];
// 使用 reduce() 方法对每个元素进行筛选,只保留在所有数组中都存在的元素
const intersection = initialIntersection.reduce((acc, value) => {
// 检查当前元素在每个数组中是否存在
const isInEveryArray = arrays.every((array) => array.includes(value));
// 如果当前元素在每个数组中都存在,则将其添加到交集中
if (isInEveryArray) {
acc.push(value);
}
return acc;
}, []);
// 递归调用 getIntersection(),传入剩余的数组进行进一步求交集
const remainingArrays = arrays.slice(1);
return getIntersection(remainingArrays.concat([intersection]));
}
// 测试示例
const arrays = [[1, 2, 3], [2, 3, 4], [3, 4, 5]];
const intersection = getIntersection(arrays);
console.log(intersection); // 输出 [3]
```
在这个例子中,getIntersection() 函数接受一个多维数组作为参数。它使用递归来处理每个维度的交集。开始时,取第一个数组作为初始交集,然后使用 reduce() 方法对每个元素进行筛选,只保留在所有数组中都存在的元素。
如果当前元素在每个数组中都存在,则将其添加到交集中。然后,递归调用 getIntersection() 函数,传入剩余的数组和当前的交集作为参数,进行下一维度的求交集。
最终,得到的交集就是多维数组的任意交集。在上面的示例中,输出结果为 [3],表示所有数组中都包含元素 3。
希望这个例子能帮助你理解如何求多维数组的任意交集。如果你还有其他问题,请随时提问。
阅读全文