首页 > 解决方案 > 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 属性和函数。

在这个意义上,我完全被困住了。无论这看起来多么简单,我都找不到答案。

标签: javascriptarraysreactjsobjectecmascript-6

解决方案


只需使用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);


推荐阅读