javascript - forEach 意外标记向现有数组添加新属性

标签 javascript lodash

我想添加一个新的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/

相关文章:

javascript - CSS 背景颜色未按预期运行

javascript - 使用键映射和过滤对象数组

javascript - Lodash:差异函数,但基于 JSON 格式

javascript - 使用 lodash 按属性合并 2 个排序的对象数组

javascript - YUI 压缩器可以缩小 ASP.NET 内联脚本吗?

javascript - 返回表达式类型 Promise<T> 不能分配给类型 Promise<T>?

javascript - 如何在 JavaScript 中获取 lastChild、firstChild 和 nextSibling 内容?

javascript - 根据属性合并两个数组

javascript - Lodash/underscore 函数使用给定长度的默认空值初始化数组

javascript - lodash 或下划线是否在 Node.js 中并行运行每个方法?