我的JS新手问题实际上涉及到几个组件(下文详述),但我很乐意的帮助只是最基础的:如何在一个数组计算对象值选择日期之间的差异?
我知道有很多的互联网两个creating iterative loops和examining 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,并已挣扎了几天给他们适当地结合起来,让我转交给你的帮助。
在此先感谢您的时间和指导!
该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(数字开始和结束日期之间的毫秒)
不知从哪儿弄来这句法知道,但它应该是这个样子:
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);
}