我可以向控制台显示serviceId的值,但是当我尝试在if()中对其进行比较时,出现此错误。您能告诉我为什么会发生这种情况以及如何解决吗?
我还尝试将servicesCompare1 [i] .serviceId的值放入变量,但出现相同的错误。
var servicesCompare1 = [];
var servicesCompare2 = [];
$.getJSON("http://localhost:55972/api/status", function (data) {
self.services(data.services);
self.lastCheck = data.lastCheck;
servicesCompare1 = (data.services);
});
function DashboardRefresh() {
self.servicesRefresh = ko.observable([]);
$.getJSON("http://localhost:55972/api/status", function (data) {
servicesCompare2 = (data.services);
self.servicesRefresh(data.services);
});
if (servicesCompare2.length > servicesCompare1.length) {
for (i = 0; i < (servicesCompare2.length-1); i++) {
console.log(servicesCompare2[i].serviceId);
if (servicesCompare1[i].serviceId !== servicesCompare2[i].serviceId) {
self.services.push(servicesCompare2[i]);
}
}
}
}
setInterval(DashboardRefresh, 5000);
控制台输出: 47 48 49 ...其他ID
未捕获的TypeError:无法读取未定义的属性'serviceId' 在DashboardRefresh(NetworkStatus.html:66)
答案 0 :(得分:1)
您的第一个条件是确保servicesCompare2的项目多于servicesCompare1。然后,您将遍历servicesCompare2中的每个项目。这意味着在某个时候,您将遇到一种情况,即servicesCompare2仍然有要遍历的项目,而servicesCompare1没有。