2015-02-25 3 views
-1

У меня есть многомерный массив «questArray», индекс которого начинается от 0 до 4 only.It имеет данные в индексах следующегоПроверки на неопределенный массив

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 

Теперь у меня есть цикл, который итерация в 40 раз .Теперь внутри этого цикл я буду, если блок с использованием для проверки определенное состояние с выше массива следующим образом:

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, код не работает, потому что нет 'questArray' с индексом больше 4. Как проверить это условие.

Я попытался следующие:

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'); 
     } 
} 

Но ни один из кода выше works.Hope вы понимаете мои problem.please help.Thanks заранее

+3

Почему бы вам не использовать массив в '.length' атрибут вместо этого? – zerkms

+0

'typeOf' неверно. Это должно быть 'typeof' (без заглавных букв). ([Статья MDN по типу] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof)) –

+1

вы пробовали '' 'if (questArray [noCoun] && secCnt == questArray [noCoun] [0] ['q_sec']) '' ' – mido

ответ

0

это не то, как я хотел бы сделать,

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] проверки, если она существует, только затем проверяет следующее условие, иначе шорты из ...

EDIT:

быть действительно безопасным, вы можете также сделать

if (questArray && questArray[noCoun] && questArray[noCoun][0] && secCnt == questArray[noCoun][0]['q_sec']){ 
0
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'); 
    } 
    } 
} 
+0

, когда noCoun = 0, questArray [noCoun] [0] ['q_sec'] будет извлекать значение = 1 , когда noCoun = 1, questArray [noCoun] [ 0] ['q_sec'] будет извлекать значение = 2 , когда noCoun = 2, questArray [noCoun] [0] ['q_sec'] будет извлекать значение = 3 , когда noCoun = 3, questArray [noCoun] [0] [' q_sec '] будет извлекать значение = 4 , когда noCoun = 4, questArray [noCoun] [0] [' q_sec '] выберет значение = 5 Но я не понимаю, как будет работать следующий цикл if? если (noCoun

+0

, если noCoun