Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get max and min dates from an array [duplicate]

I have sample data as:

data = [
  [1, 622, 782, 783, "2015-04-21"],
  [2, 622, 782, 783, "2015-04-21"],
  [3, 622, 782, 783, "2015-04-22"],
  [4, 622, 782, 783, "2015-04-23"],
  [5, 622, 782, 783, "2015-04-24"],
  [6, 622, 782, 783, "2015-04-28"],
  [7, 622, 782, 783, "2015-04-28"],
  [8, 622, 782, 783, "2015-04-29"],
  [9, 622, 782, 783, "2015-05-04"],
  [10, 622, 782, 783, "2015-05-05"]
]

How can I get the max date value and min date value from the above data? The data may be not in sorted order.

like image 442
mpsbhat Avatar asked Jun 08 '15 12:06

mpsbhat


3 Answers

1) Use map to extract the dates:

var dates = data.map(function(x) { return new Date(x[4]); })

2) Use Math.max / Math.min to get the highest / lowest dates:

var latest = new Date(Math.max.apply(null,dates));
var earliest = new Date(Math.min.apply(null,dates));
like image 195
folkol Avatar answered Nov 03 '22 06:11

folkol


var data = [
  [1, 622, 782, 783, "2015-04-21"],
  [2, 622, 782, 783, "2015-04-21"],
  [3, 622, 782, 783, "2015-04-22"],
  [4, 622, 782, 783, "2015-04-23"],
  [5, 622, 782, 783, "2015-04-24"],
  [6, 622, 782, 783, "2015-04-28"],
  [7, 622, 782, 783, "2015-04-28"],
  [8, 622, 782, 783, "2015-04-29"],
  [9, 622, 782, 783, "2015-05-04"],
  [10, 622, 782, 783, "2015-05-05"]
];

var minIdx = 0, maxIdx = 0;
for(var i = 0; i < data.length; i++) {
    if(data[i][4] > data[maxIdx][4]) maxIdx = i;
    if(data[i][4] < data[minIdx][4]) minIdx = i;
}

alert('Max: ' + maxIdx + ', ' + data[maxIdx][4]);
alert('Min: ' + minIdx + ', ' + data[minIdx][4]);
like image 2
shawn Avatar answered Nov 03 '22 05:11

shawn


Try this it will help you:

$(document).ready(function(){

var data = [
 [10, 622, 782, 783, "2015-05-05"],
  [1, 622, 782, 783, "2015-04-21"],
  [2, 622, 782, 783, "2015-04-21"],
  [3, 622, 782, 783, "2015-04-22"],
  [4, 622, 782, 783, "2015-04-23"],
  [5, 622, 782, 783, "2015-04-24"],
  [6, 622, 782, 783, "2015-04-28"],
  [7, 622, 782, 783, "2015-04-28"],
  [8, 622, 782, 783, "2015-04-29"],
  [9, 622, 782, 783, "2015-05-04"],

];
    var dates = [];
    var max_date='';
    var min_date='';
    $.each(data, function(k,v){
          dates.push(v.pop());
          dates.sort(function(a,b){
              return new Date(a)- new Date(b);
            });
        max_date = dates[dates.length-1];
        min_date = dates[0];
    });
    console.log('max_date : '+max_date);
    console.log('min_date : '+min_date);
})
like image 1
PHP Worm... Avatar answered Nov 03 '22 05:11

PHP Worm...