javascript - 检查对象数组是否包含来自另一个对象数组的多个值并删除重复项
问题描述
list.data
我有一个包含大约 2000个对象的对象数组。我有另一个数组docs
,其中一个对象已经存在于list.data
数组中。我想找到重复/重复并将它们从docs
数组中删除。如果该对象在三个属性(名称、测验主、文件)中保存了相同的值,则该对象是重复的。否则它不是重复的。到目前为止,我已经尝试过这段代码:
const filtered = docs.filter(doc => list.data.some(el => doc.name !== el.name && doc.quizmaster !== el.quizmaster && doc.file !== el.file));
任何建议我做错了什么?
先感谢您
解决方案
条件应该是相反的:
docs.filter(doc => !list.data.some(el =>
doc.name === el.name
&& doc.quizmaster === el.quizmaster
&& doc.file === el.file));
或者
docs.filter(doc => list.data.every(el =>
doc.name !== el.name
|| doc.quizmaster !== el.quizmaster
|| doc.file !== el.file));
如果您在热循环中多次执行此操作,请考虑从这些属性(例如el.name + '/' + el.quizmaster...
)创建复合键并维护 a Set
of 键,在这种情况下您可以摆脱内部过滤器。
推荐阅读
- cordova - 框架 v2 路由器不适用于 iOS 14
- cytoscape.js - 如何让 cytoscape.js 更均匀地填充画布?
- javascript - Mapbox js方向,如何设置原点来跟踪用户位置
- r - 在 R 中的代码块中有一个空行的意外输入(在 VS Code 中使用 Jupyter Notebook)
- python - 需要将 Lasagne 转换为 Keras 代码 (CNNLSTM)
- specflow - 类级别的 SpecFlow+ Runner 并行化
- python - 股票市场计算费用
- javascript - 如何在谷歌浏览器调试器的地图文件中找到相应的javascript代码
- c++ - 指针复制到自身时如何释放内存?
- mongodb - 如何避免 updateMany() mongodb 超时?