gpt4 book ai didi

javascript - 比较同一数组的当前版本和先前版本以了解 JavaScript 中值的变化

转载 作者:行者123 更新时间:2023-12-03 00:39:36 25 4
gpt4 key购买 nike

我有以下数据数组:

[{"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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com