我想添加一个新的proeprrty调用total_days使用date_from和date_to计算,但我的forEach出现了预期的 token 错误。
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;
)
不知道这里出了什么问题。
最佳答案
您没有明确说明您想要什么,但我尝试通过您的代码进行猜测。
我的猜测是,您想要从旧的申请人数组创建一个新的申请人数组,但在新数组中,您想要向该数组中的每个对象添加一个属性,该属性是两个日期的天数差异.
为此,您可以使用 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);
关于javascript - forEach 意外标记向现有数组添加新属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44150538/