发现重复 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 也存在于 a5id2a4。因此,删除/过滤掉包含重复 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; }