使用纯Javascript过滤对象数组并返回过滤后的数组?

4

我正在为大学解决编码问题,但无法想出解决方法。

如何仅使用内置方法从上述数组中获取具有JavaScript技能的申请者的新数组?

该数组如下所示:

const NewApplicants = [
    { name: "Jimmy", skills: ["Docker", "JavaScript", "Ruby"] },
    { name: "Dave", skills: ["AWS", "Python"] },
    { name: "Frankie", skills: ["Azure", "JavaScript"] },
    { name: "Liam", skills: ["Java", "JavaScript"] },
    { name: "Fred", skills: ["JavaScript", "AWS"] },
    { name: "Sara", skills: ["PHP", "AWS"] },
    { name: "Matt", skills: [".Net", "PHP", "Docker"] },
];

...并且新数组应该像这样:

const NewJavaScriptApplicants = [
    { name: "Jimmy", skills: ["Docker", "JavaScript", "Ruby"] },
    { name: "Frankie", skills: ["Azure", "JavaScript"] },
    { name: "Liam", skills: ["Java", "JavaScript"] },
    { name: "Fred", skills: ["JavaScript", "AWS"] },
];
2个回答

10

使用Array#filterArray#includes,操作如下:

const NewApplicants = [
    { name: "Jimmy", skills: ["Docker", "JavaScript", "Ruby"] },
    { name: "Dave", skills: ["AWS", "Python"] },
    { name: "Frankie", skills: ["Azure", "JavaScript"] },
    { name: "Liam", skills: ["Java", "JavaScript"] },
    { name: "Fred", skills: ["JavaScript", "AWS"] },
    { name: "Sara", skills: ["PHP", "AWS"] },
    { name: "Matt", skills: [".Net", "PHP", "Docker"] },
];

const JavaScriptApplicants = NewApplicants.filter(e => e.skills.includes("JavaScript"));

console.log(JavaScriptApplicants)

filter()方法创建一个新数组,其中包含通过提供的函数实现的测试的所有元素。
- https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

includes()方法确定数组是否包含某个元素,并相应地返回true或false。
- https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/includes


2
您可以使用filter JavaScript方法循环遍历对象并应用此条件:
var filteredData = NewApplicants.filter(function(applicant) {
    return applicant.skills.includes('JavaScript');
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接