为什么我收到此错误:Uncaught TypeError:无法读取未定义的属性'serviceId'

时间:2018-08-30 18:28:08

标签: javascript if-statement

我可以向控制台显示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)

1 个答案:

答案 0 :(得分:1)

您的第一个条件是确保servicesCompare2的项目多于servicesCompare1。然后,您将遍历servicesCompare2中的每个项目。这意味着在某个时候,您将遇到一种情况,即servicesCompare2仍然有要遍历的项目,而servicesCompare1没有。