我有以下数据数组:
[{"name":"joseph","time":"0","status":"Idle"}] //there are multiple objects inside the array
该对象数组由 Node 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');
}
}
}
但这不起作用。我收到如下错误: 类型错误:无法读取未定义的属性“状态”
我该怎么做?
最佳答案
首先是你的previousArray
是对 newArray
的引用使用=
改用扩展运算符语法:
const previousArray = [...newArray];
然后在第一个循环中你有 <=
而不是<
const newarray = [{"name":"joseph","time":"0","status":"Calling"}];
const previousarray = [...newarray];
for(let i = 0; i < newarray.length; i++) {
for(let j = 0; j < previousarray.length; j++) {
if(previousarray[j].status != newarray[i].status) {
newarray[i].time = moment().format('H:mm:ss');
}
}
}
关于javascript - 比较同一数组的当前版本和先前版本以了解 JavaScript 中值的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53514257/