javascript - 为什么我收到此错误:未捕获的类型错误:无法读取未定义的属性“serviceId”
问题描述
我可以将 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
未捕获的类型错误:无法读取 DashboardRefresh 处未定义的属性“serviceId”(NetworkStatus.html:66)
解决方案
您的第一个条件确保 servicesCompare2 具有比 servicesCompare1 更多的项目。然后,您将遍历 servicesCompare2 中的每个项目。这意味着在某些时候,您将遇到 servicesCompare2 仍有要遍历的项目,而 servicesCompare1 没有的情况。
推荐阅读
- r - 自定义 bookdown 中的“编辑”链接
- javascript - Firebase Cloud Firestore 函数单独随机部署
- python - Django,管理页面
- c++ - 有没有办法通过按 f5 或 VScode 中的任何其他键来编译 C++ 代码?
- haskell - 了解递归的评估(haskell)
- reactjs - 为供应商添加多个入口点后的 Webpack 错误
- reactjs - 对我的应用程序中的内存泄漏作出反应
- java - ARCore:从锚点或姿势获取 2d 坐标
- python - 在 python 中读取用户输入可能性的快速方法
- angular - HttpClient 发布在可观察链中的第二次调用时返回 Observable