检查是否有未定义的数组

Check for undefined array

本文关键字:数组 未定义 是否 检查      更新时间:2024-04-26

我有一个多维数组"questArray",其索引仅从0到4开始。它在索引中的数据如下

questArray[0][0]['q_sec']=1
questArray[1][0]['q_sec']=2
questArray[2][0]['q_sec']=3
questArray[3][0]['q_sec']=4
questArray[4][0]['q_sec']=5

现在,我有一个for循环,它迭代了40次。现在在这个for循环中,我使用if块来检查上述阵列的特定条件如下:

for(var secCnt=1;secCnt<=5;secCnt++){
  for(var noCoun=0;noCoun<40;noCoun++){
     if (secCnt == questArray[noCoun][0]['q_sec']){
       //some code here
       alert('1');
     }
  }
}

我的问题是,在内部循环中,当"noCoun"计数器的值大于4时,代码不起作用,因为没有索引大于4的"questArray"。我该如何检查这种情况。

我尝试过以下几种:

if (typeOf questArray[noCoun][0]['q_sec'] !== undefined){
         if (secCnt == questArray[noCoun][0]['q_sec']){
           //some code here
           alert('1');
         }
}
if (typeOf questArray[noCoun][0]['q_sec'] !== 'undefined'){
         if (secCnt == questArray[noCoun][0]['q_sec']){
           //some code here
           alert('1');
         }
}

if (questArray[noCoun][0]['q_sec'] !== 'null'){
         if (secCnt == questArray[noCoun][0]['q_sec']){
           //some code here
           alert('1');
         }
}
if (questArray[noCoun][0]['q_sec'] !== ''){
         if (secCnt == questArray[noCoun][0]['q_sec']){
           //some code here
           alert('1');
         }
}

但是上面的代码都不起作用。希望你能理解我的问题。请帮忙。提前感谢

这就是我的做法,

for(var secCnt=1;secCnt<=5;secCnt++){
  for(var noCoun=0;noCoun<40;noCoun++){
     if (questArray[noCoun] && secCnt == questArray[noCoun][0]['q_sec']){
       //some code here
       console.log('1');
     }
  }
}

基本上questArray[noCoun]检查它是否存在,然后才检查下一个条件,否则短路。。。

编辑:

为了真正安全,你也可以进行

if (questArray && questArray[noCoun] && questArray[noCoun][0] && secCnt == questArray[noCoun][0]['q_sec']){
for(var secCnt=1;secCnt<=5;secCnt++){
  for(var noCoun=0;noCoun<40;noCoun++){
     if (noCoun < questArray.length && secCnt == questArray[noCoun][0]['q_sec']){
       //some code here
       alert('1');
     }
  }
}