问题描述
如果从第一个/上一个数组中找到重复的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
中也发现了a5
和id2
中的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; }