I want to filter a simple JSON file by date range. With a start date and and end date.
And this is my function:
var startDate = new Date("2013-3-25");
var endDate = new Date("2017-3-25");
var aDate = new Date();
var filteredData = this.orders.filter(function(a){
aDate = new Date(a.fecha);
aDate >= startDate && aDate <= endDate;
});
console.log(filteredData)
Here's my: fiddle
I'm expecting to get one object in my array, however the array is empty as you can see in the console.
I want to filter a simple JSON file by date range. With a start date and and end date.
And this is my function:
var startDate = new Date("2013-3-25");
var endDate = new Date("2017-3-25");
var aDate = new Date();
var filteredData = this.orders.filter(function(a){
aDate = new Date(a.fecha);
aDate >= startDate && aDate <= endDate;
});
console.log(filteredData)
Here's my: fiddle
I'm expecting to get one object in my array, however the array is empty as you can see in the console.
Share Improve this question edited Nov 26, 2020 at 7:50 1x2x3x4x asked Jan 10, 2018 at 14:29 1x2x3x4x1x2x3x4x 6049 silver badges32 bronze badges3 Answers
Reset to default 4When you use the filter
method on an array, that function needs to return a boolean to indicate to the script whether to keep a value or remove it.
You didn't return the value from within the filter function. This works:
var filteredData = this.orders.filter(function(a){
aDate = new Date(a.fecha);
return aDate >= startDate && aDate <= endDate;
});
however the array is empty as you can ses in the console.
Because filter
's callback method is not returning anything, make it
var filteredData = this.orders.filter(function(a){
var aDate = new Date(a.fecha);
return aDate.getTime() >= startDate.getTime() && aDate.getTime() <= endDate.getTime();
});
Note
- Date parison is done differently, check this answer.
- You need not do
getTime()
onstartDate
andendDate
for every iteration, do it once before thefilter
You aren't returning anything in your filter.
var filteredData = this.orders.filter(function(a){
aDate = new Date(a.fecha);
return aDate >= startDate && aDate <= endDate;
});
For reference, https://developer.mozilla/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter