代码之家  ›  专栏  ›  技术社区  ›  Jake Wilcox

过滤一个对象数组并使用纯Javascript返回一个过滤数组?

  •  -2
  • Jake Wilcox  · 技术社区  · 6 年前

    我在为大学做一个编码问题,但没办法解决。

    如何从上面的数组中获取一个新数组,其中只有那些将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 回复  |  直到 6 年前
        1
  •  4
  •   user4639281 user4639281    6 年前

    使用 Array#filter Array#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/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

    includes() 方法确定数组是否包含某个元素,并根据需要返回true或false。
    - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes

        2
  •  1
  •   Haider Ali    6 年前

    filter 循环对象并应用此条件的javascript方法:

    var filteredData = NewApplicants.filter(function(applicant) {
        return applicant.skills.includes('JavaScript');
    });