如何添加迭代函数循环来计算日期数组对象值的选择时间?

问题描述 投票:0回答:2

我的JS新手问题实际上涉及到几个组件(下文详述),但我很乐意的帮助只是最基础的:如何在一个数组计算对象值选择日期之间的差异?

我知道有很多的互联网两个creating iterative loopsexamining the difference between dates的例子。但是,大多数这些实例计算的持续时间使用一个变量,并且在环的实施例趋向于包括像// Do something语句,而不是提供用于包括功能的示例。我(还)没有发现解决这个特殊的(简单的)问题的问题。

我已经走了这么远最接近的是这样的,其目的是计算对象的价值观和今天的区别之一:

durationArray = {
var myArray = report_data;
var arrayLength = report_data.length;
for (var i = 0; i < arrayLength; i++) {
  var copy = new Date(report_data[i]["Start Date"]);
  var duration_adjusted = (today - copy)/24/60/60/1000;
  return duration_adjusted;
}
  return myArray
}

report_data供给为:

report_data =  [{
    "Author Name": "Joe",
    "Unit Name": "IT",
    "Report Name": "Tech Paper 1",
    "Start Date": "2/3/2014",
    "End Date": "21-Mar-17"
  },
  {
    "Author Name": "Carole",
    "Unit Name": "IT",
    "Report Name": "Tech Paper 2",
    "Start Date": "4/8/2015",
    "End Date": "5-May-16"
  },
  {
    "Author Name": "Bob",
    "Unit Name": "IT",
    "Report Name": "Tech Paper 3",
    "Start Date": "6/16/2015",
    "End Date": "30-May-17"
  },
  {
    "Author Name": "Sue",
    "Unit Name": "IT",
    "Report Name": "Tech Paper 4",
    "Start Date": "7/16/2015",
    "End Date": "pending"
  }]

但是这个代码是错误的,因为它只返回一个值(适合所有​​数组对象不是值)。另外,我想在阵列["Start Date"]["End Date]比较两个对象,而不是仅计算今天开始日期之间的差额(但我没有在我尝试这一步得到B / C我不能正确地迭代) 。

在情况下,它有助于促进一个答案,here's an Obeservable notebook with my errant code

如果你感到额外慷慨的或想了解更多挑战的(我意识到这是一个非常基本的问题),那么这里的地方问题的第二部分来自于:

在我的虚拟数据的最后一个项目,而不是一个日期还有价值“待定”(表示该报告尚未完成)。除了计算数组对象["Start Date"]["End Date]之间的区别,我想添加一个“其他”声明,对于“待定”值计算today["Start Date"]之间的差异。

我希望这是明确的,我没有得到抨击太难提出这个很“新手”的问题。我从家里通过教程学习JS,并已挣扎了几天给他们适当地结合起来,让我转交给你的帮助。

在此先感谢您的时间和指导!

javascript arrays loops date duration
2个回答
1
投票

map功能将帮助您修改数据集的每一个项目

var modifiedReports = report_data.map(function(item)
{
    item.diff = new Date(item['End Date']).getTime() - new Date(item['Start Date']).getTime();

    return item;
})

在此示例中的modifiedReports集将保持相同的数据作为report_data PLUS的附加字段称为DIFF(数字开始和结束日期之间的毫秒)


0
投票

不知从哪儿弄来这句法知道,但它应该是这个样子:

var durationArray = [];
var myArray = report_data;
var arrayLength = report_data.length;
for (var i = 0; i < arrayLength; i++) {
  var copy = new Date(report_data[i]["Start Date"]);
  var duration_adjusted = (today - copy)/24/60/60/1000;
  durationArray.push(duration_adjusted);
}
© www.soinside.com 2019 - 2024. All rights reserved.