1

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.

1x2x3x4x
  • 592
  • 8
  • 26

3 Answers3

4

When 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;
});
JakeParis
  • 11,056
  • 3
  • 42
  • 65
3

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 comparison is done differently, check this answer.
  • You need not do getTime() on startDate and endDate for every iteration, do it once before the filter
gurvinder372
  • 66,980
  • 10
  • 72
  • 94
  • Thank you for your answer and time! you're right about the return. However, the comparision dates will come in dinamically, this was just a fast fidd that i've made. – 1x2x3x4x Jan 10 '18 at 14:39
  • @xxxxxxxxxxxxx Sure, I added the details just to complete the answer. Hopefully this helped! – gurvinder372 Jan 10 '18 at 14:41
0

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.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter