Javascript 如何在循环中添加迭代函数来计算从选择数组对象值的日期开始的持续时间?

Javascript 如何在循环中添加迭代函数来计算从选择数组对象值的日期开始的持续时间?,javascript,arrays,loops,date,duration,Javascript,Arrays,Loops,Date,Duration,我的JS新手问题实际上涉及到一些组件(如下详述),但我很乐意得到一些基本的帮助:如何计算数组中选择对象值的日期差? 我意识到在互联网上有很多关于和的例子。但是,这些计算持续时间的示例大多使用一个变量,循环上的示例往往包含类似于//Do something的语句,而不是提供包含函数的示例。我还没有找到一个能解决这个特殊(简单)问题的问题 到目前为止,我得出的最接近的结果是,它试图计算一个对象值与当前值之间的差异: durationArray = { var myArray = report_dat

我的JS新手问题实际上涉及到一些组件(如下详述),但我很乐意得到一些基本的帮助:如何计算数组中选择对象值的日期差?

我意识到在互联网上有很多关于和的例子。但是,这些计算持续时间的示例大多使用一个变量,循环上的示例往往包含类似于
//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
}
但这段代码是错误的,因为它只返回一个值(不是所有数组对象的值)。此外,我还想比较数组中的两个对象
[“开始日期”]
[“结束日期]
,而不是只计算今天和开始日期之间的差异(但我在尝试b/c时还没有做到这一点,我无法正确迭代)

如果它有助于促进回答

如果你觉得自己特别慷慨或者想要更多的挑战(我知道这是一个非常基本的问题),那么问题的第二部分就在这里:

在我的虚拟数据的最后一项中,不是一个日期,而是一个值“pending”(表示报告尚未完成)。除了计算数组对象
[“Start date”]
[“End date]
之间的差异外,我还想添加一个“else”语句来表示“pending”计算当前
[“开始日期”]
之间差异的值

我希望这是清楚的,我不会因为提出这个非常“新手”的问题而被猛烈抨击。我在家里通过教程学习JS,几天来一直在努力将它们适当地结合起来,所以我向您寻求帮助


提前感谢您的时间和指导

我不知道你是从哪里得到这个语法的,但它应该是这样的:

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);
}
var-durationArray=[];
var myArray=报告数据;
var arrayLength=报告\数据长度;
对于(变量i=0;i
我不知道你从哪里得到这个语法,但它应该是这样的:

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);
}
var-durationArray=[];
var myArray=报告数据;
var arrayLength=报告\数据长度;
对于(变量i=0;i
映射功能将帮助您修改数据集的每个项目

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

    return item;
})

在本示例中,
modifiedReports
集合将保存与
报表数据相同的数据,加上一个名为diff(开始日期和结束日期之间的毫秒数)

的附加字段,
映射
函数将帮助您修改数据集合的每个项目

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\u data
相同的数据,加上一个名为diff(开始日期和结束日期之间的毫秒数)

的附加字段,我认为您应该使用
getTime
方法(),简而言之:
let diff=new date().getTime()-new date(report\u data[I][“开始日期”]).getTime()
谢谢@ymz-这是一个有用的线索,但我仍然不知道如何在循环中包含此类函数。请阅读。谢谢@RobG。我读过关于JS times以UTC为基础的文章,它可能会给出奇怪的转换结果(例如,当用户的系统时间解释输入日期时,显示输入日期比输入日期早几个小时)。对于这个问题,没什么大不了的。。。我主要是在寻找一种方法,为所有数组元素获取数组中值之间的近似差值。该示例使用日期,但这些日期也可以是数字。我的困难是试图让循环语句中的逻辑应用于所有数组项,而不是返回单个结果。我认为您应该使用
getTime
method(),简而言之:
let diff=new Date().getTime()-new Date(report_data[I][“Start Date”])。getTime()
Thank@ymz-这是一个有用的线索,但是我仍然不知道如何在循环中包含这种函数,请阅读。谢谢@RobG。我读过关于JS times以UTC为基础的文章,它可能会给出奇怪的转换结果(例如,当用户的系统时间解释输入日期时,显示输入日期比输入日期早几个小时)。对于这个问题,没什么大不了的。。。我主要是在寻找一种方法,为所有数组元素获取数组中值之间的近似差值。该示例使用日期,但这些日期也可以是数字。我的任务是让循环语句中的逻辑应用于所有数组项,而不是返回单个结果。谢谢@jcubic。我尝试了您的方法,但仍然返回一个值,而不是数组。我更新了我的可观察笔记本来演示。至于我的语法。。。这正是我从互联网上慢慢发现的@aaron.kyle此语法不是有效的javascript,如果它在Observable notebook上工作,则表示这是它们的语法。这就是如何在JavaScript中实现这一点。请不要使用Observable自学JavaScript使用Codepen/jsfiddle/codeSandobox或其他JS游乐场。下次我将尝试将其移植到codepen或JSfiddle。谢谢@jcubic。我尝试了您的方法,但仍然返回一个值,而不是数组。我更新了我的可观察编号