如何在搜索筛选功能中返回包含指定演员值的完整对象?
解决方案
你的现有代码逻辑已经可以返回符合要求的完整电影对象:外层filter的返回值本身就是所有满足筛选条件的电影对象数组,直接接收checkCast函数的返回值即可使用。
内层遍历演员列表不需要使用filter,替换为Array.some()方法效率更高,只要存在任意一个匹配的演员就会直接终止遍历返回真值,优化后的代码如下:
checkCast(allMovies) { // 提前将搜索关键词转小写,避免循环中重复执行转换操作 const targetActor = this.search.cast.toLowerCase() return allMovies.filter(movie => { // 只要当前电影的演员列表存在匹配项,就会将该完整电影对象加入返回结果 return movie.cast.some(actor => actor.toLowerCase().includes(targetActor)) }) }
效果示例
假设搜索关键词为Jennifer Lawrence,调用函数后得到的返回结果如下:
[ { "title": "Mother!", "year": 2017, "cast": [ "Jennifer Lawrence", "Javier Bardem", "Michelle Pfeiffer", "Domhnall Gleeson", "Ed Harris", "Kristen Wiig" ], "genres": [] } ]
内容的提问来源于stack exchange,提问作者Kuchar000
相关产品推荐
相关产品推荐

