gpt4 book ai didi

javascript - 如何在javascript中过滤对象数组中的数组?

转载 作者:行者123 更新时间:2023-11-29 10:36:37 24 4
gpt4 key购买 nike

我有一个对象数组,其中包含有关电影的信息。每个对象都有一个流派值。该值可以是字符串或数组。

我正在从查询字符串中获取一个流派并将其保存到一个名为流派的变量中。现在我只想整理该类型的电影。

我的对象数组如下所示:

movies = [
{
title:"Apocalypse Now",
year: "1979",
genre: [
"drama",
"war"
]
},
{
title:"Unforgiven",
year: "1992",
genre: [
"western",
"drama"
]
},
{
title: "The big Lebowski",
year: "1998",
genre: "comedy"
}
];

现在我找到了一个可行的解决方案。但我对此并不满意,因为:

  1. 不允许每部电影超过 3 种类型。

  2. 它看起来不漂亮并且不能很好地与其他代码组合。我认为一定有更好的方法,但我找不到。

这是我现在拥有的:

var genre = req.query.genre;
var movies = data.movies;
var filtered = movies.filter(function(x){
return x.genre == genre || x.genre[0] == genre || x.genre[1] == genre || x.genre[2] == genre;
});

最佳答案

因为 x 可以是一个字符串或一个数组,所以如果它是一个字符串就可以简单地测试相等性,或者如果它是一个数组就使用 indexOf

var genre = req.query.genre;
var movies = data.movies;
var filtered = movies.filter(function(x){
return typeof x == "string" ? x == genre : x.indexOf(genre) >= 0;
});

注意:您可以使用现代浏览器

     return typeof x == "string" ? x == genre : x.includes(genre);

关于javascript - 如何在javascript中过滤对象数组中的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35531140/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com