多数组对比去除重复元素取得n位数唯一组合,演示结果
时间: 2023-12-12 22:03:03 浏览: 67
好的,让我来为您演示如何从多个数组中去除重复元素,取得唯一的n位数所有组合。
假设我们有三个数组,分别是`[1, 2, 3]`、`[2, 3, 4]`和`[3, 4, 5]`。我们希望从这三个数组中取得唯一的两位数所有组合,去除重复元素。
首先,我们可以将这三个数组合并成一个大数组,然后使用Set数据结构去除重复元素。接着,我们可以使用递归函数来找出所有唯一的n位数组合。
下面是示例代码:
```
function getUniqueCombinations(arr, n) {
// 去除重复元素
const set = new Set(arr);
const uniqueArr = Array.from(set);
const result = [];
function combine(selected, index) {
if (selected.length === n) {
result.push(selected.slice());
return;
}
for (let i = index; i < uniqueArr.length; i++) {
selected.push(uniqueArr[i]);
combine(selected, i + 1);
selected.pop();
}
}
combine([], 0);
return result;
}
const arr1 = [1, 2, 3];
const arr2 = [2, 3, 4];
const arr3 = [3, 4, 5];
const mergedArr = [...arr1, ...arr2, ...arr3];
const combinations = getUniqueCombinations(mergedArr, 2);
console.log(combinations); // [[1, 2], [1, 3], [1, 4], [1, 5], [2, 3], [2, 4], [2, 5], [3, 4], [3, 5], [4, 5]]
```
在这个示例中,我们首先将三个数组合并成一个大数组`mergedArr`,然后使用Set数据结构去除重复元素。接着,我们使用递归函数`combine`来找出所有唯一的n位数组合,最后返回结果数组`result`。
运行上面的代码,将会得到所有唯一的两位数组合,结果如下:
```
[[1, 2], [1, 3], [1, 4], [1, 5], [2, 3], [2, 4], [2, 5], [3, 4], [3, 5], [4, 5]]
```
如果您需要取得其他位数的唯一组合,只需要将函数调用中的第二个参数`n`改为所需的位数即可。
阅读全文