我正在使用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;
});
};
答案 0 :(得分:2)
由于dt_txt是字符串,因此简单的布尔检查就足够了。
.filter(day => {
return day.dt_txt.endsWith("15:00:00")
})