【发布时间】:2021-03-30 15:19:00
【问题描述】:
我有 3 个数组(或更多/更少,不是必须为 3,我只是举了一个例子),我想删除它们之间的所有公共元素。例如,在第一个 2 之间,公共元素是 x and z,在第二个和第三个数组之间,公共元素是 t。在第一个和第三个之间的共同元素是k。基本上我想删除在多个数组中出现超过 1 次的任何元素。
!!第一个数组可以和第三个数组有共同的元素!!
这是我迄今为止尝试过的,但它无法正常工作。
let y = [{
id: 'a',
elems: ['x', 'y', 'z', 'k']
},
{
id: 'b',
elems: ['x', 't', 'u', 'i', 'z']
},
{
id: 'c',
elems: ['m', 'n', 'k', 'o', 't']
},
]
// x, z, t
for (let i = 0; i < y.length - 1; i++) {
let current = y[i].elems
let current2 = y[i + 1].elems
if (current[i] == current2[i]) {
const index = current.indexOf(current[i]);
if (index > -1) {
current.splice(index, 1);
current2.splice(index, 1);
}
}
}
console.log(y)
想要的结果是
[
{
"id": "a",
"elems": [
"y"
]
},
{
"id": "b",
"elems": [
"u",
"i"
]
},
{
"id": "c",
"elems": [
"m",
"n",
"o"
]
}
]
这将是一个正确和最佳的解决方案?我还尝试连接 3 个数组并删除重复项,但后来我不知道如何重新创建 3 个数组。谢谢!
【问题讨论】:
-
对不起,那里没用。我会删除它
标签: javascript arrays duplicates