Javascript检查对象数组中是否存在字符串

Nic*_*k D 4 javascript arrays object ecmascript-6 reactjs

我的程序中有两个数组,一个包含充当键的字符串列表,另一个包含包含键的对象。

let classKeys = ['math', 'robotics'];
let classesInList = [{key : "WIHUGDYVWJ", className : 'math'},{key : "qwljdhkuqwdnqwdk", className : 'english'},{key : "likubqwd", className : 'robotics'},];
Run Code Online (Sandbox Code Playgroud)

仅当 classKeys 中存在键(作为 className 属性)时,我才需要返回另一个包含 classesInList 等对象的数组

例如,在这种情况下,我需要根据 classesInList 检查 classKeys 并创建一个包含两个项目的数组:

[{key : "WIHUGDYVWJ", className : 'math'},{key : "likubqwd", className : 'robotics'}]
Run Code Online (Sandbox Code Playgroud)

由于英语不在 classKeys 中,因此它从 classesInList 中删除。我该怎么办?

旁注:我使用的是 react native,所以我可以访问 es6 属性和函数。

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

Ter*_*rry 5

只需使用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);
Run Code Online (Sandbox Code Playgroud)