Javascript JS for循环获取每个数组中的日期差

Javascript JS for循环获取每个数组中的日期差,javascript,arrays,for-loop,date-difference,Javascript,Arrays,For Loop,Date Difference,我试图总结每个成员的总缺勤天数 我们只有两个成员:A和B。 A因为不同的原因离开了两次,她休假3天,其他原因休假2天。 B住院8天,休假4天 这是我尽力做到的代码 *我写的日期就是一个例子。日期值将由JS onclick发布不需要串或其他东西。 var成员=[{ 名称:“A”, 缺席:[{ 理由:“离开”, 开始日期:“2020-02-01”, 结束日期:“2020-02-03” },{ 理由:“等”, 开始日期:“2020-02-15”, 结束日期:“2020-02-16” } ] },{

我试图总结每个成员的总缺勤天数

我们只有两个成员:A和B。 A因为不同的原因离开了两次,她休假3天,其他原因休假2天。 B住院8天,休假4天

这是我尽力做到的代码

*我写的日期就是一个例子。日期值将由JS onclick发布不需要串或其他东西。

var成员=[{
名称:“A”,
缺席:[{
理由:“离开”,
开始日期:“2020-02-01”,
结束日期:“2020-02-03”
},{
理由:“等”,
开始日期:“2020-02-15”,
结束日期:“2020-02-16”
}
]
},{
名称:“B”,
缺席:[{
理由:“住院”,
开始日期:“2020-02-03”,
结束日期:“2020-02-10”
},{
理由:“离开”,
开始日期:“2020-02-10”,
结束日期:“2020-02-13”
}
]
}]
var countAbsentDays=函数(){
var countDays\u start=成员[0]。缺少[0]。开始日期;
var countDays\u end=成员[0]。缺少[0]。结束日期;
var diff=(新日期(countDays_end))-(新日期(countDays_start));
var计数=差异/(1000*60*60*24);
返回计数;
};

log(countabsentDays())您可以使用map来转换数组,并将数组元素累加为值

var成员=[{
名称:“A”,
缺席:[{
理由:“离开”,
开始日期:“2020-02-01”,
结束日期:“2020-02-03”
},{
理由:“等”,
开始日期:“2020-02-15”,
结束日期:“2020-02-16”
}
]
},{
名称:“B”,
缺席:[{
理由:“住院”,
开始日期:“2020-02-03”,
结束日期:“2020-02-10”
},{
理由:“离开”,
开始日期:“2020-02-10”,
结束日期:“2020-02-13”
}
]
}]
var countAbsentDays=函数(){
返回member.map(m=>//将成员数组的每个元素映射到对象{[m.name]:(缺少数组的缩减值)}
({
[m.name]:
m、 缺席(
(acc,x)=>
acc+日期差异(x.结束日期,x.开始日期)
,0)//为每个元素返回累加器+dateDiff结果
})
);
函数dateDiff(结束,开始){
var countDays\u start=开始;
var countDays_end=结束;
var diff=(新日期(countDays_end))-(新日期(countDays_start));
var计数=差异/(1000*60*60*24);
返回计数;
}
};
log(countAbsentDays())