过滤器API数组

时间:2018-11-22 12:50:46

标签: javascript reactjs

我正在使用OpenWeather API进行5天3小时的天气预报,我的响应JSON在数组中以“ dt_txt”形式提供了40个项目:“ 2018-11-22 15:00:00”作为日期格式宾语。 我的问题是我想在每个天(每天15.00)而不是每3小时渲染一个对象。如何过滤数组以每天15.00返回1个对象?

我的代码如下:

handleFormSubmit = e => {
    e.preventDefault();

    fetch(
      "https://api.openweathermap.org/data/2.5/forecast?q=" +
        this.state.userInput +
        "&units=metric&APPID="
    )
      .then(results => {
        return results.json();
      })
      .then(data => {
        let days = data.list
          .filter(day => {
            return day.dt_txt === **???????insert help here?????**;
          })
          .map((day, index) => {
            return (
              <div key={index}>
                <div className="card WeatherDays" style={{ paddingTop: 20 }}>
                  <p>{day.dt_txt.slice(5, 16)}</p>
                  <p style={pStyle}>{day.main.temp}°</p>
                  {day.main.temp >= 15 ? (
                    <i className="fas fa-sun icons fa-5x" />
                  ) : (
                    <i className="fas fa-cloud-sun-rain fa-5x" />
                  )}
                </div>
              </div>
            );
          });
        this.setState(() => {
          return {
            days: days,
            userInput: ""
          };
        });
      })
      .catch(error => {
        let errors = error;
      });
  };

1 个答案:

答案 0 :(得分:2)

由于dt_txt是字符串,因此简单的布尔检查就足够了。

.filter(day => {
  return day.dt_txt.endsWith("15:00:00")
})