2010-06-22 4 views
2

Я пытаюсь поймать последний случай в цикле forEach, но все случаи, кажется, оценивают как false, а не последнее, которое является истинным. Мой код:Javascript Если Statement не оценивает True

for(var i in networks){ 
    if (i == (networks.length - 1)){ 
     //do stuff 
    } 
} 

Что происходит не так?

+0

Является указательный числовой (0, 1, 2 и т.д.) или что-то еще, как «боб», «кошки», «собака», «foo»? – HoLyVieR

+0

Мой индекс числовой, когда я распечатываю i, он идет от 0 до (n - 1) –

ответ

4

Попробуйте это:

for(var i = 0, j = networks.length; i < j; i++){ 
    if (i == (j - 1)){ 
     //do stuff 
    } 
} 

я лично презираю for...in цикл в JavaScript, поскольку он приносит в картину целую кучу нежелательных свойств, это ненадежно - нуждается тонна здравомыслия проверяет, чтобы убедиться, текущее свойство не является нежелательным типом или неопределенным. Я могу продолжать и продолжать. Я предлагаю, чтобы единственный раз, когда вы делали , используйте использования, когда вы выполняете итерацию по объектам, и вам нужны ключевые значения.

+2

+1 - синтаксический сахар синтаксиса «for ... in» быстро теряет свой блеск, если вам нужно знать, где в loop вы относитесь к началу/концу. – inkedmn

+1

Особенности. Почему это работает, но с использованием индекса из 'for in' не работает? Я бы хотел использовать 'for in' для удобочитаемости, но если это единственный способ, которым это работает, пусть будет так. –

+2

Обратите внимание, что «for in» будет проходить через каждый объект и возвращать ключ в ассоциативном массиве, будь то целое число, строка и т. Д. Одна из причин, по которой он может быть неудачен, - «сети» не использует целые числа для ключей. –

1

Если сети представляют собой массив чисел в порядке от 0 до n, это должно работать. ;) Если это не так, вы можете рассмотреть стандартный for цикл:

for(var i = 0; i < networks.length; i++) { 
    var network = networks[i]; // in case you need this. 
    if (i == (networks.length - 1)){ 
     //do stuff 
    } 
} 
Смежные вопросы