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

Javascript JSON:通过计算现在的时间差和JSON对象中的时间戳,在每个对象中添加一个密钥对,javascript,arrays,json,Javascript,Arrays,Json,我想在JSON数组的每个对象中存储一个额外的密钥对,并计算时间 我有一个包含对象的JSON数组,如下所示: var arrofobj = [{"id": 1, "timestamp":1545311087282},{"id": 2, "timestamp":1545311148254}]; 我想向数组中的每个对象添加一个密钥对,其“now timestamp”与JSON对象中存储的时间戳之间存在差异 它是否可以与forEach()语句一起工作,在该语句中,我可以使用以下语句生成新的密钥对:

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

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

var arrofobj = [{"id": 1, "timestamp":1545311087282},{"id": 2, "timestamp":1545311148254}];
我想向数组中的每个对象添加一个密钥对,其“now timestamp”与JSON对象中存储的时间戳之间存在差异

它是否可以与
forEach()
语句一起工作,在该语句中,我可以使用以下语句生成新的密钥对:

arrofobj.timestampdiff=(新日期().getTime()-arrofobj.timestamp)

但我不知道怎么做


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

您可以使用数组

var arrofobj=[{“id”:1,“timestamp”:1545311087282},{“id”:2,“timestamp”:1545311148254}];
现在让我们=new Date().getTime();
arrofobj.forEach(v=>v.timestampdiff=now-v.timestamp);

控制台日志(arrofobj)使用


我知道您知道forEach方法的
forEach
,但是使用该方法,您正在对原始数组进行更改,如果您想创建数组的新副本,可以使用
map
。然后当然要通过使用来对数组中的对象进行“克隆”

编辑 我已经更新了它,使它更像@Ashish写的答案,我写它的方式可能更“初学者友好”,但这种方式同样好,而且编写代码更少,这很好

const数组=[{“id”:1,“timestamp”:1545311087282},{“id”:2,“timestamp”:1545311148254}];
const now=new Date().getTime();
//新的副本。
const newArray=array.map(o=>({…o,diff:now-o.timestamp}));
console.log(数组);
log(newArray);
//改变原来的。
forEach(o=>o.diff=now-o.timestamp);

console.log(数组)谢谢大家,@JO3-W3B-D3V,我不知道forEach会添加到当前阵列中,但这正是我现在需要的,它将在其他用例中使用其他选项。谢谢大家@Jéan我很高兴能与你分享一些东西!:)如果您不担心直接更改阵列,那么请使用
forEach
!:)谢谢@JO3-W3B-D3V,(很抱歉再问一个问题),我正在尝试将diff改为分钟,但是`const newarr=arr.map(o=>({diff:(now-o.timestamp).getMinutes()});`不起作用,它说“TypeError:(now-o.timestamp)。getMinutes不是一个函数”。有什么想法吗?@Jéan我做了一些改变来说明你是如何做到的。哇,这个我们聪明的家伙!作为常数的高阶函数!从未见过这样的行动!谢谢大家!@哈哈,我很高兴你喜欢它!这并不复杂,正如你所看到的,我个人喜欢用函数式风格编写JavaScript,因为我很懒。。。哈哈!:)你好@JO3-W3B-D3V,还有一件事。。。(我将调整我的Q以反映新的),有时timestamp=0,在souch情况下,我不想计算分钟数,我试图在函数中引入if语句,例如`const diff=time=>(if(time==0){0;}else{new Date(now).getMinutes()-new Date(time).getMinutes()});`,但它不起作用,我怎样才能让它起作用?
arrofobj.map(data=> ({...data, timestampdiff: new Date().getTime() - data.timestamp}))