我想使用date_from和date_to添加一个新的proeprrty调用total_days计算但是我的forEach得到了一个预期的令牌错误。
let applicants = [{
date_from: '2017-05-05',
date_to: '2017-05-10'
},{
date_from: '2017-05-08',
date_to: '2017-05-12'
}]
calculateDays = applicants.forEach(obj =>
applicants['total_days'] = (obj.date_from).diff(obj.date_to, 'days')+1;
)
不知道这里有什么问题。
答案 0 :(得分:1)
您没有完全澄清您想要的内容,但我试图通过您的代码进行猜测。
我的猜测是你想要从旧的数组申请人中创建一个新的申请人数组,但是在新数组中,你想要为该数组中的每个对象添加一个属性,即两个日期的天数差异
为此,您可以使用Array.prototype.map
将数组中的每个项目映射到新数组。
我也在使用Object.assign
to clone each object,以便原始数组不会被修改。
我也在将日期字符串解析为数字。解析的数字是自1970年1月1日00:00:00 UTC以来经过的毫秒数。如果我取两个数字的差值并除以millisecondsInADay
,那么我将得到它们之间经过了多少天。
然后将结果存储到新数组calculateDays
。
如果您需要更多说明,请与我们联系。
let applicants = [{
date_from: '2017-05-05',
date_to: '2017-05-10'
}, {
date_from: '2017-05-08',
date_to: '2017-05-12'
}]
const millisecondsInADay = 1000 * 60 * 60 * 24;
const calculateDays = applicants.map(obj => Object.assign({}, obj, {
total_days: ((
Date.parse(obj.date_to) - Date.parse(obj.date_from)
) / millisecondsInADay) + ' days'
}));
console.log(calculateDays);
答案 1 :(得分:0)
假设您要向所有对象添加新属性,可以将obj
用作新属性的变量。
applicants.forEach(obj => obj.total_days = obj.date_from.diff(obj.date_to, 'days') + 1);
// ^^^