【问题标题】:Check if each object in array of objects contains a value that is in another array (JavaScript)检查对象数组中的每个对象是否包含另一个数组中的值(JavaScript)
【发布时间】:2020-07-07 12:33:19
【问题描述】:

如果我有以下对象数组:

    const movies = [
        {
            movieTitle: "The House That Jack Built",
            movieGenre: "Thriller",
            movieDirector: "Lars Von Trier",
            movieStarring: "Matt Dillon, Uma Therman",
        },
        {
            movieTitle: "Mother!",
            movieGenre: "Thriller",
            movieDirector: "Darren Aronofsky",
            movieStarring: "Jennifer Lawrence",
        },
        {
            movieTitle: "Hot Fuzz",
            movieGenre: "Comedy",
            movieDirector: "Edgar Wright",
            movieStarring: "Simon Pegg",
        }
    ]

还有以下数组:

const filters = ["Jennifer Lawrence", "Comedy"]

如何创建一个新数组,其中仅包含具有 filters 数组中的值的对象(在本例中为最后 2 个)?

谢谢!

【问题讨论】:

    标签: javascript arrays object filter


    【解决方案1】:

    使用filter、some 和Object.values:

    const movies  = [{movieTitle:"The House That Jack Built",movieGenre:"Thriller",movieDirector:"Lars Von Trier",movieStarring:"Matt Dillon, Uma Therman"},{movieTitle:"Mother!",movieGenre:"Thriller",movieDirector:"Darren Aronofsky",movieStarring:"Jennifer Lawrence"},{movieTitle:"Hot Fuzz",movieGenre:"Comedy",movieDirector:"Edgar Wright",movieStarring:"Simon Pegg"}];
    const filters = ["Jennifer Lawrence", "Comedy"];
    
    const res = movies.filter(
      movie => Object.values(movie).some(v => filters.includes(v))
    );
    
    console.log(res);

    【讨论】:

    • 完美,谢谢。尝试了这些的各种组合,但无法做到正确
    猜你喜欢
    • 1970-01-01
    • 2016-04-24
    • 1970-01-01
    • 1970-01-01
    • 2020-11-29
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    相关资源
    最近更新 更多