javascript - 过滤两个日期之间的 JSON 数据
问题描述
我收到了返回给我的 JSON 数据,我正在尝试过滤两个日期之间的数据,但进展并不顺利。代码在这里,您看到的注释掉的是我已经尝试过但无济于事的内容(日期格式为 dd-MM-yyyy,以防您想知道)..
let data = [
{ date : "06-06-2020", toll:1, Province: "Ontario" },
{ date : "06-06-2020", toll:10, Province: "Alberta" },
{ date : "07-06-2020", toll:2, Province: "Ontario" },
{ date : "08-06-2020", toll:2, Province: "Alberta" },
{ date : "09-06-2020", toll:15, Province: "Alberta" },
{ date : "08-06-2020", toll:18, Province: "Ontario" },
{ date : "07-06-2020", toll:11, Province: "Nova Scotia" },
{ date : "07-06-2020", toll:1, Province: "Ontario" },
{ date : "10-06-2020", toll:10, Province: "Manitoba" },
{ date : "11-06-2020", toll:9, Province: "Manitoba" },
{ date : "11-06-2020", toll:3, Province: "Ontario" },
{ date : "07-06-2020", toll:89, Province: "Manitoba" },
{ date : "06-06-2020", toll:90, Province: "Ontario" },
{ date : "06-06-2020", toll:45, Province: "Nova Scotia" },
{ date : "13-06-2020", toll:55, Province: "Ontario" },
{ date : "13-06-2020", toll:1, Province: "Ontario" },
{ date : "13-06-2020", toll:17, Province: "Ontario" },
{ date : "12-06-2020", toll:2, Province: "Nova Scotia" },
{ date : "08-06-2020", toll:8, Province: "Ontario" },
{ date : "08-06-2020", toll:9, Province: "Newfoundland " },
{ date : "06-06-2020", toll:11, Province: "Newfoundland " },
{ date : "12-06-2020", toll:100, Province: "Ontario" },
{ date : "06-06-2020", toll:13, Province: "Ontario" }
];
function GetData(){
let startDate, endDate;
startDate = new Date("03-06-2020");
endDate = new Date("13-06-2020");
console.log(data.filter(f => f.Province == "Ontario"));
//let betweenDate = data.filter(f => {
// let date = new Date(f.date);
// return (f.date >= startDate && f.date <= endDate && f.Province == "Ontario");
//});
//
//let betweenDate = data.filter(f => {
// return (f.date >= startDate && f.date <= endDate && f.Province == "Ontario");
//});
//console.log(betweenDate);
}
GetData();
解决方案
“日期格式是 dd-MM-yyyy,以防你想知道” → 这就是问题所在。new Date
不知道您使用的是那种格式。下面,我添加了一个将其转换为YY-MM-dd
.
您还需要比较date
您创建的变量,而不是f.date
:
// Minified, but same data as yours
let data = [{date:"06-06-2020",toll:1,Province:"Ontario"},{date:"06-06-2020",toll:10,Province:"Alberta"},{date:"07-06-2020",toll:2,Province:"Ontario"},{date:"08-06-2020",toll:2,Province:"Alberta"},{date:"09-06-2020",toll:15,Province:"Alberta"},{date:"08-06-2020",toll:18,Province:"Ontario"},{date:"07-06-2020",toll:11,Province:"Nova Scotia"},{date:"07-06-2020",toll:1,Province:"Ontario"},{date:"10-06-2020",toll:10,Province:"Manitoba"},{date:"11-06-2020",toll:9,Province:"Manitoba"},{date:"11-06-2020",toll:3,Province:"Ontario"},{date:"07-06-2020",toll:89,Province:"Manitoba"},{date:"06-06-2020",toll:90,Province:"Ontario"},{date:"06-06-2020",toll:45,Province:"Nova Scotia"},{date:"13-06-2020",toll:55,Province:"Ontario"},{date:"13-06-2020",toll:1,Province:"Ontario"},{date:"13-06-2020",toll:17,Province:"Ontario"},{date:"12-06-2020",toll:2,Province:"Nova Scotia"},{date:"08-06-2020",toll:8,Province:"Ontario"},{date:"08-06-2020",toll:9,Province:"Newfoundland "},{date:"06-06-2020",toll:11,Province:"Newfoundland "},{date:"12-06-2020",toll:100,Province:"Ontario"},{date:"06-06-2020",toll:13,Province:"Ontario"}];
function datefromDDMMYYFormat(str) {
return new Date(str.split('-').reverse().join('-'));
}
const startDate = datefromDDMMYYFormat("03-06-2020");
const endDate = datefromDDMMYYFormat("13-06-2020");
const betweenDate = data.filter(f => {
const date = datefromDDMMYYFormat(f.date);
return (date >= startDate && date <= endDate && f.Province == "Ontario");
});
console.log(betweenDate);
推荐阅读
- php - php在上传之前将2个上传的文件重命名为特定名称
- java - 如何捕获异常并存储在 ArrayList 中
- r - 变量 cyl 作为原子向量
- javascript - 从字符串列表创建动态 SVG
- inno-setup - 我可以在 [Setup] 部分使用什么替代方法来代替 Inno Setup 中的自定义消息?
- google-visualization - 谷歌可视化条形格式
- react-native - 反应导航 v5 从抽屉自定义视图导航
- java - 澳大利亚/墨尔本时区的 Java 8 中的日期时间夏令时问题
- c# - 如何使用反射将 IList 动态转换为任意数据类型的数组
- java - Java中由主线程创建的两个线程之间的通信