比较同一数组的当前版本和以前版本的javascript值变化

比较同一数组的当前版本和以前版本的javascript值变化,javascript,arrays,node.js,Javascript,Arrays,Node.js,我有以下数据数组: [{"name":"joseph","time":"0","status":"Idle"}] //there are multiple objects inside the array 节点js服务每秒生成一个对象数组。我想将新创建的数组与以前创建的数组进行比较,以检查状态的更改 乙二醇 案例1 newly created [{"name":"joseph","time":"0","status":"Idle"}] previously created [{"name"

我有以下数据数组:

[{"name":"joseph","time":"0","status":"Idle"}] //there are multiple objects inside the array
节点js服务每秒生成一个对象数组。我想将新创建的数组与以前创建的数组进行比较,以检查状态的更改

乙二醇

案例1

newly created 
[{"name":"joseph","time":"0","status":"Idle"}]

previously created
[{"name":"joseph","time":"0","status":"Idle"}]
比较新对象和以前对象的状态:状态无变化

案例2

newly created 
[{"name":"joseph","time":"0","status":"Calling"}]

previously created

[{"name":"joseph","time":"0","status":"Idle"}]
比较新对象和以前对象的状态:状态已更改

我希望你明白我的意思。 如果状态已更改,则将当前时间分配给时间键; 我不知道如何保存以前的数组并将其与新创建的数组进行比较

到目前为止我所做的:

newarray = [{"name":"joseph","time":"0","status":"Calling"}];
previousarray = newarray;
for(i=0;i<=newarray.length;i++){
  for(j=0;j<previousarray.length;j++){
if(previousarray[j].status != newarray[i].status){

  newarray[i].time = moment().format('H:mm:ss');
}
  }
}
newarray=[{“name”:“joseph”,“time”:“0”,“status”:“Calling”}];
previousarray=newarray;

对于(i=0;i首先,您的
previousArray
是使用
=

请改用扩展运算符语法:

const previousArray=[…newArray];


然后在第一个循环中,
可以按照以下可能的方式执行。假设
新创建的
&
以前创建的

new_created=[{“name”:“joseph”,“time”:“0”,“status”:“Calling”},{“name”:“joseph-2”,“time”:“0”,“status”:“Idle”},{“name”:“joseph-3”,“time”:“0”,“status”:“Calling”});
以前创建的=[{“名称”:“约瑟夫”,“时间”:“0”,“状态”:“空闲”},{“名称”:“约瑟夫-2”,“时间”:“0”,“状态”:“呼叫”},{“名称”:“约瑟夫-3”,“时间”:“0”,“状态”:“呼叫”}];
新创建的.forEach(函数(newArrObj,索引){
if(newArrObj.status!==以前创建的[index].status){
//newArrObj.time=moment().format('H:mm:ss');
newArrObj.time=new Date().toTimeString().split(“”)[0];
}
});

console.log('New Array:',New_created);
我想您应该这样做:

newarray = {"name":"joseph","time":"0","status":"Calling"};
previousarray = newarray;
if(previousarray['status'] !== newarray['status']){

  newarray['time'] = "date-time";

}

什么是更改?按顺序,在属性中?在属性中更改。例如,这里是objects的status属性,但更改仍然在同一个索引中?我认为这只是索引超出范围导致未定义对象的情况。newarray[1]在循环使用中是未定义的。<另外,最好不要直接修改数组,而是创建并返回一个新数组。(不变性)在这种情况下,您可以使用array.map()来完成这项操作。请参阅,这对您的帮助很大