javascript - 如何从二维数组中获取唯一值,同时删除包含另一个数组中元素的重复项
问题描述
我有这样的数组
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谢谢。
解决方案
您可以使用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; }
推荐阅读
- kubernetes - k3d 上的“minikube ip”等价物是什么
- swift - 由于第三方登录(如苹果、Facebook 等)导致应用程序拒绝问题
- node.js - 我正在尝试填充您可以在下面看到的**task_item**,但我没有得到结果。Nodejs、Expressjs 和 MongoDb
- php - 在 Laravel 中编辑图像时设置所需的文件?
- python - 使用日期时间索引将数据帧字典导出为 JSON
- python - 卡在烧瓶应用程序中实现弹性搜索
- html - 如何在轮播 bootstrap4 上设置标签
- python - 语法错误 RunPython using xlwings, sys.path
- python-3.x - 如何在 Julia 中使用 wget
- xamarin - Xamarin Stepper 输入时增量