比较同一数组的当前版本和以前版本的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()来完成这项操作。请参阅,这对您的帮助很大