首页 > 解决方案 > 过滤嵌套对象

问题描述

所以我有这个功能,理论上应该按给定类型过滤一系列电影,但我得到这个错误:

TypeError: movie.genres.some is not a function.
(in 'movie.genres.some(function(item){return item.name === genre;})',
'movie.genres.some' is undefined) `
Movie class =>  
  title: string,
  ...,
  genres: Genre[]

Genre class => 
  id: number,
  name: string
FilterMovies = (genre: string) => {
  let fmovies: Movie[] = this.state.movies.filter((movie) => {
    let data = movie.genres.some((item) => item.name === genre);
    return data;
  });

我做这些事情是对的还是我搞砸了其中一个功能?任何帮助将不胜感激!

编辑:这是一个电影对象的例子 在此处输入图像描述

标签: javascriptarraystypescript

解决方案


从您收到的错误消息中。该类的genres属性Movie并不是真正的数组,Genre因为所有数组都有一个some属性(假设您没有删除它)。最有可能genres的属性只是一个Genre对象(错字)。


推荐阅读