javascript - Javascript检查字符串是否存在于对象数组中
问题描述
我的程序中有两个数组,一个包含用作键的字符串列表,另一个包含也包含键的对象。
let classKeys = ['math', 'robotics'];
let classesInList = [{key : "WIHUGDYVWJ", className : 'math'},{key : "qwljdhkuqwdnqwdk", className : 'english'},{key : "likubqwd", className : 'robotics'},];
仅当键(作为 className 属性)存在于 classKeys 中时,我才需要返回另一个包含类似 classesInList 的对象的数组
例如,在这种情况下,我需要根据 classesInList 检查 classKeys 并创建一个包含两项的数组:
[{key : "WIHUGDYVWJ", className : 'math'},{key : "likubqwd", className : 'robotics'}]
因为英语不在 classKeys 中,所以从 classesInList 中删除。我该怎么办?
旁注:我使用的是本机反应,所以我可以访问 es6 属性和函数。
在这个意义上,我完全被困住了。无论这看起来多么简单,我都找不到答案。
解决方案
只需使用Array.prototype.filter
并将其与Array.prototype.includes
. 您要做的是过滤classesInList
对象数组,并仅选择数组className
中存在值的对象classKeys
。
let classKeys = ['math', 'robotics'];
let classesInList = [{key : "WIHUGDYVWJ", className : 'math'},{key : "qwljdhkuqwdnqwdk", className : 'english'},{key : "likubqwd", className : 'robotics'}];
let filteredClasses = classesInList.filter(cls => classKeys.includes(cls.className));
console.log(filteredClasses);
推荐阅读
- jdbctemplate - JdbcTemplate - queryForList - 大量数据运行缓慢
- javascript - 查找容器内的实时鼠标坐标
- node.js - 将 adonis 模板引擎从 edge 更改为 ejs
- python - 如何针对以下场景优化嵌套 for 循环或替代方法
- python-3.x - 带有durable_rules 的Django 休息框架
- curl - 如何使用 python requests 模块获得与使用 curl -i 选项相同的结果?(JSONDecodeError)
- pyspark - 从 rdd 中选择元素,其中 for (x,y), (y,x) 存在于 rdd
- amazon-web-services - 无服务器 - 如何通过无服务器创建独立的客户管理策略
- ios - Swift:如何在动画前保持视图
- firebase-authentication - React-Native Firebase Auth : [auth/unknown] 发生网络错误(例如超时、连接中断或主机无法访问)