代码之家  ›  专栏  ›  技术社区  ›  Jéan

JS-JSON:通过计算现在的时间差和JSON对象中的时间戳,在每个对象中添加一个密钥对。

  •  3
  • Jéan  · 技术社区  · 6 年前

    我想在JSON数组的每个对象中用计算出的时间存储一个额外的密钥对。

    我有一个包含对象的JSON数组,如下所示:

    var arrofobj = [{"id": 1, "timestamp":1545311087282},{"id": 2, "timestamp":1545311148254}];
    

    我想给数组中的每个对象添加一个键对,其区别在于“now timestamp”和存储在JSON对象中的时间戳。

    它能和一个 forEach() 语句,在这里我可以用如下语句生成新的密钥对: arrofobj.timestampdiff = (new Date().getTime() - arrofobj.timestamp)

    但我不知道怎么做?

    此外,我想计算存储的时间戳的差异(以分钟为单位),现在,有时存储的时间戳是0,那么它还必须报告0?

    3 回复  |  直到 6 年前
        1
  •  1
  •   JO3-W3B-D3V    6 年前

    我知道你知道 forEach 方法,但使用该方法,您将更改原始数组,如果要创建数组的新副本,可以使用 map .当然,通过使用 destructuring .

    编辑

    我把它更新得更像@ashish写的答案,我写的方式可能更像' 初学者友好型 但是这样做也很好,而且编写代码也更少,这很好。

    const array = [{"id": 1,"timestamp": 1545311087282}, {"id": 2, "timestamp": 1545311148254}];
    const now = new Date().getTime();
    
    // New copy.
    const newArray = array.map(o => ({...o, diff: now - o.timestamp}));
    
    console.log(array);
    console.log(newArray);
    
    // Changes original. 
    array.forEach(o => o.diff = now - o.timestamp);
    console.log(array);

    编辑2

    你可能想玩 怎样 它在几分钟内计算出了差异,但我 假设 这就是你想要达到的目标?

    const array = [{"id": 1,"timestamp": 1545311087282}, {"id": 2, "timestamp": 1545311148254}];
    const now = new Date().getTime();
    
    // Difference in minutes.
    const diff = time => new Date(now).getMinutes() - new Date(time).getMinutes();
    
    // New copy.
    const newArray = array.map(o => ({...o, minsDiff: diff(o.timestamp)}));
    
    console.log(array);
    console.log(newArray);
        2
  •  3
  •   Nikhil Aggarwal    6 年前

    你可以使用 前奏曲 如下

    var arrofobj = [{"id": 1, "timestamp":1545311087282},{"id": 2, "timestamp":1545311148254}];
    let now = new Date().getTime();
    arrofobj.forEach(v => v.timestampdiff = now - v.timestamp);
    console.log(arrofobj);
        3
  •  0
  •   Ashish    6 年前

    简单的单线性方法 map

    arrofobj.map(data=> ({...data, timestampdiff: new Date().getTime() - data.timestamp}))