【问题标题】:Mapping Over an Array and Converting Date Property to Milliseconds and Returning New Array映射数组并将日期属性转换为毫秒并返回新数组
【发布时间】:2021-02-24 18:37:19
【问题描述】:

我想遍历一个对象数组,将 date 属性转换为毫秒,然后得到一个新数组,它与第一个数组具有相同的属性,但将 date 属性更改为毫秒。

所以对于这个:

let records = [
  {id: 1, date: '29/06/2020'},
  {id: 2, date: '29/07/2020'},
  {id: 3, date: '29/08/2020'}
]

我最终应该得到:

[
  {id: 1, date: 1593403200000}
  {id: 2, date: 1595995200000}
  {id: 3, date: 1598673600000}
]

我是这样使用地图的:

 let newRecords = records.map(r => r.date = moment(r.date, 'DD/MM/YYYY').valueOf());

...但它返回一个仅包含日期属性的对象数组,如下所示:

[
  1593403200000, 
  1595995200000, 
  1598673600000
]

...而我想要原始对象,只是将日期转换为毫秒。如何编辑我的 map() 函数以在新数组中返回整个原始对象?

【问题讨论】:

    标签: javascript arrays


    【解决方案1】:

    map 将返回您从回调函数返回的新值数组。因此,在您的情况下,您应该返回对象而不是日期值。

    let newRecords = records.map(r => {
        const date = moment(r.date, 'DD/MM/YYYY').valueOf());
        return {...r, date}; // using spread operator just to get a new reference of the object
    }
    

    【讨论】:

      【解决方案2】:
      let newRecords = records.map(r => ({...r, date: moment(r.date, 'DD/MM/YYYY').valueOf()}));
      

      【讨论】:

      • 我会将第一个答案标记为正确,因为它是第一个发布的。但我更喜欢这个,因为它对我来说更干净一些。我没有考虑使用扩展运算符。不错!
      猜你喜欢
      • 2015-07-03
      • 2019-06-10
      • 1970-01-01
      • 2019-12-24
      • 1970-01-01
      • 2020-09-04
      • 2023-04-10
      • 2010-10-08
      • 1970-01-01
      相关资源
      最近更新 更多