gpt4 book ai didi

javascript - 如何按时间范围过滤 ng-repeat 数据?

转载 作者:行者123 更新时间:2023-11-29 19:24:43 24 4
gpt4 key购买 nike

我正在创建一个应用程序,它将使用第三方 API 提供航类列表。我在使用不同日期和时间格式的两个时间之间进行过滤时遇到问题,我已经学习了很多教程,但所有教程都只使用日期,但我需要使用来自不同日期和时间格式的时间进行归档。

JSON

"Combination": [        
"OutboundLeg" :{
"DepartureDateTime": "07/14/2015 12:00"
}
"OutboundLeg" :{
"DepartureDateTime": "07/15/2015 10:55"
}
"OutboundLeg" :{
"DepartureDateTime": "07/18/2015 12:10"
}
"OutboundLeg" :{
"DepartureDateTime": "07/14/2015 10:10"
}
"OutboundLeg" :{
"DepartureDateTime": "07/18/2015 12:00"
}
]

HTML

<div ng-repeat="data in Combination | filterBtwnTime: ??? ">
<td>{{data.OutboundLeg.DepartureDateTime}}</td>
</div>

如何实现?

最佳答案

首先,您拥有的数据不正确,因为您拥有一个具有相同键的对象,所以只会考虑 OutboundLeg 的最后一个值。您有一个包含一个对象的数组,该对象多次具有相同的键。

您需要一个对象数组,因为 Angular 过滤器仅适用于数组

模板:

<div ng-app="app"> 
<div ng-controller="MyController">
<div ng-repeat="data in Combination | dateFilter:startDate:endDate ">
<div ng-bind="data.DepartureDateTime "></div>
</div>
</div>

过滤器:

function dateFilter() {
return function(input, start, end) {
var inputDate = new Date(input),
startDate = new Date(start),
endDate = new Date(end),
result = [];

for (var i=0, len = input.length; i < len; i++) {
inputDate = new Date(input[i].DepartureDateTime);
if (startDate < inputDate && inputDate < endDate) {
result.push(input[i]);
}
}
return result;

}
}

完整代码可以在我创建的 fiddle 中找到,该 fiddle 对数组进行了小的更新,该 fiddle 过滤了定义的开始日期和结束日期之间的日期。您可以根据需要针对您的示例进行调整。

Fiddle - filter between two dates

更新 - 过滤 ng-repeat

关于javascript - 如何按时间范围过滤 ng-repeat 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31286571/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com