我正在做一个React项目,该项目可以让我搜索一系列游戏,以帮助我根据自己的心情决定要玩的游戏,目前我可以将游戏添加到JSON文件中,但是我可以我真的很努力地寻找部分。现在,要添加新游戏,您将输入游戏的标题,类型和描述。流派字段是ReduxForm FieldArray对象,我认为这是给我带来麻烦的原因。这是我当前的JSON文件{ "games": [ { "name": "Rainbow Six: Siege", "genres": [ { "genre": "tactical" }, { "genre": "shooter" } ], "description": "tactical team based shooter", "id": 1 }, { "name": "Resident Evil 2", "genres": [ { "genre": "horror" }, { "genre": "survival" }, { "genre": "shooter" } ], "description": "classic resident evil 2 remake in 2019", "id": 2 }, { "name": "Rocket League", "genres": [ { "genre": "cars" }, { "genre": "competition" }, { "genre": "one more game" } ], "description": "soccar!", "id": 3 } ]}这是我用来搜索的虚拟数据:const searchedGenres = 'horror, shooter';const searchedList = searchedGenres.split(', ');let foundGame = [];一旦我使用该数据进行搜索,计划就是允许我只在一个文本框中在前端输入数据,因此“恐怖,开枪”将是我的搜索词。此搜索的结果应仅返回“生化危机2”,但是,即使它缺少我所请求的体裁之一,我也将收到《彩虹六号:围攻》。searchedList.forEach(searchedGenre => { this.props.games.map(game => { if ( game.genres.find( ({ genre }) => genre.toLowerCase() === searchedGenre.toLowerCase().trim() ) !== undefined ) { foundGames.push(game); } });});我了解为什么我会同时获得《彩虹六号》和《生化危机》,因为当我将游戏添加到foundGames数组中时,我实际上并没有检查这两种类型都属于游戏类型,但是我完全不知道该如何在添加游戏之前,我会确保所有类型的游戏都存在。 最佳答案 如果您的流派是简单的字符串数组而不是对象,这会容易一些,但是仍然可以通过利用some()中的every()和filter()简洁地进行检查(顺便说一句,filter()比 + map()此处)let games = [{"name": "Rainbow Six: Siege","genres": [{"genre": "tactical"},{"genre": "shooter"}],"description": "tactical team based shooter","id": 1},{"name": "Resident Evil 2","genres": [{"genre": "horror"},{"genre": "survival"},{"genre": "shooter"}],"description": "classic resident evil 2 remake in 2019","id": 2},{"name": "Rocket League","genres": [{"genre": "cars"},{"genre": "competition"},{"genre": "one more game"}],"description": "soccar!","id": 3}]const searchedGenres = 'horror, shooter';const searchedList = searchedGenres.split(', ');let foundGame = games.filter(game => searchedList.every(searchItem => game.genres.some(g => g.genre == searchItem) ))console.log(foundGame)过滤条件基本上是说您希望push()中的每个游戏都至少匹配一种游戏。这将使其只返回与每种类型都匹配的游戏。关于javascript - 是否可以获取与另一个数组中的项目匹配的对象数组中的所有项目的列表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55545333/
10-09 21:58