为什么在尝试筛选电影的release_date时会变得未定义?

时间:2018-06-29 12:26:10

标签: javascript reactjs debugging

enter image description here

这是收藏夹状态,其中包含电影的发行日期。

我试图将release_date过滤器设置为日期状态,如下所示:

sortMovies= () => {
    let releases = this.state.favorites.filter(this.favorites.release_date)
    this.setState({
      dates: releases,
    });
    console.log(this.state.dates);
}

我将此功能放在按钮onClick中,当我按下它时,会得到:

enter image description here

如何过滤掉处于收藏夹状态的所有release_date并将其添加到日期状态?

2 个答案:

答案 0 :(得分:5)

filter将过滤掉返回真实值的数组中的每个条目。您正在尝试提取每个收藏夹的release_date,因此map更适合:

let releases = this.state.favorites.map(favorite => favorite.release_date);

答案 1 :(得分:0)

因为Array.prototype.filter()期望第一个参数是 function

您正尝试使用this.favorites.release_date,它不是一个函数,并且由于this.favorites是一个数组而没有定义。

请使用回调函数来测试数组的每个元素,如果匹配则返回true,否则返回false。

const releases = this.state.favorites.filter(movie => !!movie.release_date)