发现重复 ID 时如何过滤掉数组及其值
How to filter out array(s) and its value(s) when a duplicate id is found
如果从 first/previous 数组中找到重复的 id
,我如何删除或过滤掉后续数组和 its/their 值?举个例子:
const a1 = ["id1", "b", "c", "d", "e"],
a2 = ["id2", "y", "z", "w", "v"],
a3 = ["id3", "k", "j", "i", "f"],
a4 = ["m", "n", "o", "p", "id2"],
a5 = [1, 2, "id1", 3, 4]
因为 id1
也存在于 a5
和 id2
中 a4
。因此,删除/过滤掉包含重复 id1, id2, id3...id(n)
的整个数组,而不管它们的值不同,只保留唯一 id
首先显示的第一个数组。因此,上述示例的预期输出为:
[
["id1", "b", "c", "d", "e"],
["id2", "y", "z", "w", "v"],
["id3", "k", "j", "i", "f"]
]
您可以将数组放入数组中,然后使用对象作为散列进行过滤 table。
const
data = [["id1", "b", "c", "d", "e"], ["id2", "y", "z", "w", "v"], ["id3", "k", "j", "i", "f"], ["m", "n", "o", "p", "id2"], [1, 2, "id1", 3, 4]],
seen = {},
result = data.filter(a => {
const id = a.find(v => v.toString().startsWith('id'));
if (seen[id]) return;
return seen[id] = true;
});
console.log(result)
.as-console-wrapper { max-height: 100% !important; top: 0; }
如果从 first/previous 数组中找到重复的 id
,我如何删除或过滤掉后续数组和 its/their 值?举个例子:
const a1 = ["id1", "b", "c", "d", "e"],
a2 = ["id2", "y", "z", "w", "v"],
a3 = ["id3", "k", "j", "i", "f"],
a4 = ["m", "n", "o", "p", "id2"],
a5 = [1, 2, "id1", 3, 4]
因为 id1
也存在于 a5
和 id2
中 a4
。因此,删除/过滤掉包含重复 id1, id2, id3...id(n)
的整个数组,而不管它们的值不同,只保留唯一 id
首先显示的第一个数组。因此,上述示例的预期输出为:
[
["id1", "b", "c", "d", "e"],
["id2", "y", "z", "w", "v"],
["id3", "k", "j", "i", "f"]
]
您可以将数组放入数组中,然后使用对象作为散列进行过滤 table。
const
data = [["id1", "b", "c", "d", "e"], ["id2", "y", "z", "w", "v"], ["id3", "k", "j", "i", "f"], ["m", "n", "o", "p", "id2"], [1, 2, "id1", 3, 4]],
seen = {},
result = data.filter(a => {
const id = a.find(v => v.toString().startsWith('id'));
if (seen[id]) return;
return seen[id] = true;
});
console.log(result)
.as-console-wrapper { max-height: 100% !important; top: 0; }