首页 > 解决方案 > 如何从二维数组中获取唯一值,同时删除包含另一个数组中元素的重复项

问题描述

我有这样的数组

const data=[ [aa, bb, cc], [aa, dd, cc], [aa, bb, cc], [aa, ee, cc], [aa, ff, cc], [aa, dd, cc]]

和另一个这样的数组

const array2=[bb, dd, ee]

我想把它转换成这样:

const data=[ [aa, bb, cc], [aa, dd, cc], [aa, ee, cc] ]

我试过这样:

const unique = [...data.reduce((cache, curr) => {
      let key = JSON.stringify(curr);
       if (!cache.has(key)) cache.set(key, curr)
       return cache;
     }, new Map()).values()]

但它不能正常工作。它也从数组 2 中给出值

PS谢谢。

标签: javascriptarraysfilter

解决方案


您可以使用Set.

const
    data = [['aa', 'bb', 'cc'], ['aa', 'dd', 'cc'], ['aa', 'bb', 'cc'], ['aa', 'ee', 'cc'], ['aa', 'ff', 'cc'], ['aa', 'dd', 'cc']],
    include = ['bb', 'dd', 'ee'],
    unique = data
        .filter(a => a.some(v => include.includes(v)))
        .filter(
            (s => a =>
                (j => !s.has(j) && s.add(j))
                (JSON.stringify(a))
            )
            (new Set)
        );

console.log(unique);
.as-console-wrapper { max-height: 100% !important; top: 0; }


推荐阅读