javascript - 有条件地在列表中显示日期
问题描述
目前我正在研究小型 React 项目,我正在使用航班信息 API 提供的数据。到目前为止,一切都按计划进行。我可以在列表中显示所有数组项。现在我正在尝试实现一个在列表中的单独行上显示日期的功能。我只想为具有相同日期的一个或多个项目显示一次日期。
在我使用变量displayDate的条件下。基本上只是为了能够暂时打开/关闭日期并测试一些逻辑。我现在想弄清楚的是我需要什么逻辑才能将 if 语句评估为真或假。当前日期和数组中的下一个日期之间必须进行某种比较。
数组中的每个对象都有一个名为 scheduleDate 的属性,格式为“2020-07-06”。
有什么想法可以解决这个问题吗?
<Flights>
{resolvedData &&
resolvedData.flights
.filter((item) => item.flightName === item.mainFlight)
.map((item, index) => {
if (displayDate) {
return (
<React.Fragment key={item.id}>
<Date date={item.scheduleDate} />
<Flight flight={item} />
</React.Fragment>
);
} else {
return <Flight key={item.id} flight={item} />;
}
})}
</Flights>
解决方案
检查 scheduleDate 是否与上一个不同
const renderTable = () => {
let currentDate = null;
return data.map((item, index) => {
if (item.scheduleDate !== currentDate) {
currentDate = item.scheduleDate;
return (
<>
<Date/>
<Flight/>
</>
);
} else {
return <Flight/>;
}
});
};
<Flights>{renderTable()}</Flights>
推荐阅读
- r - 如何对保留前 n 个组件的网络图进行子集化?
- javascript - TypeError:类型方法的对象不是 JSON 可序列化的
- c# - 带有 Entity Framework Core 默认脚手架控制器的 ASP.NET Core Web API 混淆了放置和发布?
- salesforce - 我安排了一个顶级课程每天运行,但没有任何反应。有人可以帮帮我吗?
- amazon-web-services - 学习 DynamoDB 查询的资源
- php - 如何在 Facebook Business SDK 中获取响应标头
- c++ - C++ 如果我编写一个函数模板并且不请求对其进行任何实例化,是否会从中生成任何模板函数?
- c# - 插入数据库一对多关系.net core 3.1
- javascript - SVG d3 元素口吃/颤动/摇晃。内部没有变化
- javascript - 如何通过单击下拉列表选项弹出模式