Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中计算具有特定日期的数组元素_Javascript_Date_Counting - Fatal编程技术网

在javascript中计算具有特定日期的数组元素

在javascript中计算具有特定日期的数组元素,javascript,date,counting,Javascript,Date,Counting,我有一个javascript中的Date()对象数组,我想计算每天的事件数 以下是一个例子: 我得到的是: Array [ Date 2014-12-04T10:30:20.000Z, Date 2014-12-05T11:04:58.056Z, Date 2014-12-05T11:04:58.056Z, Date 2014-12-05T11:04:58.056Z ] 我想要的是: Array [{date: '2014-12-04', counts: 1}, {date: '2014-12

我有一个javascript中的Date()对象数组,我想计算每天的事件数

以下是一个例子:

我得到的是:

Array [ Date 2014-12-04T10:30:20.000Z, Date 2014-12-05T11:04:58.056Z, Date 2014-12-05T11:04:58.056Z, Date 2014-12-05T11:04:58.056Z ]
我想要的是:

Array [{date: '2014-12-04', counts: 1}, {date: '2014-12-05', counts: 3}]
非常感谢

Max

基本答案:

var arr = [], // fill it with array with your data
results = {}, rarr = [], i, date;

for (i=0; i<arr.length; i++) {
  // get the date
  date = [arr[i].getFullYear(),arr[i].getMonth(),arr[i].getDate()].join("-");
  results[date] = results[date] || 0;
  results[date]++;
}
// you can always convert it into an array of objects, if you must
for (i in results) {
  if (results.hasOwnProperty(i)) {
     rarr.push({date:i,counts:results[i]});
  }
}
var arr=[],//用数组填充数据
结果={},rarr=[],i,日期;
对于(i=0;i基本答案:

var arr = [], // fill it with array with your data
results = {}, rarr = [], i, date;

for (i=0; i<arr.length; i++) {
  // get the date
  date = [arr[i].getFullYear(),arr[i].getMonth(),arr[i].getDate()].join("-");
  results[date] = results[date] || 0;
  results[date]++;
}
// you can always convert it into an array of objects, if you must
for (i in results) {
  if (results.hasOwnProperty(i)) {
     rarr.push({date:i,counts:results[i]});
  }
}
var arr=[],//用数组填充数据
结果={},rarr=[],i,日期;

对于(i=0;i您最好使用一个简单的对象,其中键作为日期,值作为计数。我添加了一个简单的pad函数,根据您的输出要求,在数字为一位数的情况下,该函数的前缀为零

function pad(n) {
  return n.toString().length == 1 ? '0' + n : n;
}

function getCount(arr) {
  var obj = {};
  for (var i = 0, l = arr.length; i < l; i++) {
    var thisDate = arr[i];
    var day = pad(thisDate.getDate());
    var month = pad(thisDate.getMonth() + 1);
    var year = thisDate.getFullYear();
    var key = [year, day, month].join('-');
    obj[key] = obj[key] || 0;
    obj[key]++;
  }
  return obj;
}

getCount(arr); // Object { 2014-04-12: 1, 2014-05-12: 3 }
功能板(n){
返回n.toString().length==1?'0'+n:n;
}
函数getCount(arr){
var obj={};
对于(变量i=0,l=arr.length;i

您最好使用一个简单的对象,其中键为日期,值为计数。我添加了一个简单的pad函数,根据您的输出要求,在数字为一位数的情况下,该函数的前缀为零

function pad(n) {
  return n.toString().length == 1 ? '0' + n : n;
}

function getCount(arr) {
  var obj = {};
  for (var i = 0, l = arr.length; i < l; i++) {
    var thisDate = arr[i];
    var day = pad(thisDate.getDate());
    var month = pad(thisDate.getMonth() + 1);
    var year = thisDate.getFullYear();
    var key = [year, day, month].join('-');
    obj[key] = obj[key] || 0;
    obj[key]++;
  }
  return obj;
}

getCount(arr); // Object { 2014-04-12: 1, 2014-05-12: 3 }
功能板(n){
返回n.toString().length==1?'0'+n:n;
}
函数getCount(arr){
var obj={};
对于(变量i=0,l=arr.length;i

第一个数组是什么?是字符串还是日期对象?是日期对象,如文本所述第一个数组是什么?是字符串还是日期对象?是日期对象,如文本所述