发现重复ID时如何过滤出数组及其值

问题描述

如果从第一个/上一个数组中找到重复的id,如何删除或过滤出后续的数组及其值?例如:

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中也发现了a5id2中的a4。因此,请删除/过滤掉包含重复id1,id2,id3...id(n)的整个数组,而不管它们的值如何,只保留第一个数组在唯一显示id的位置。因此,以上示例的预期输出为:

           [
            ["id1",["id2",["id3","f"]
           ]
      

解决方法

您可以将数组放入数组中,然后通过将对象用作哈希表进行过滤。

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; }