Лучший способ использовать "для в"

Код, который работал раньше, теперь не работал в цикле for после того, как я добавил enyo.js. Я подозреваю, что когда я использую for(var ls in list) он проходит через цикл, даже когда длина равна 0. Когда я поставил отлаженную информацию, я обнаружил, что она рассматривает "findIndex" как одно из значений в списке, и переходит в цикл. У меня есть несколько мест, использующих для с в, я хочу найти лучший способ отфильтровать "findIndex" или любые недопустимые индексы, чтобы только правильные элементы попадали в цикл

for(var ls in list)
  {
    var lin = list[ls].rb ;

  }

1 ответ

Решение

Если вы перечислите массив, просто используйте обычный for петля. Обычно это не очень хорошая идея для использования с массивом именно по этой причине, а также потому, что порядок не гарантирован.

Если вы должны использовать for...in используйте проверку hasOwnProperty:

for (var ls in list)
{
   if (list.hasOwnProperty(ls)) {
       var lin = list[ls].rb;
       // ...
   }
}

Конечно, если вас беспокоит только то, есть ли у вас rb свойство, вы можете просто проверить это:

if (list[ls].rb) {
    var lin = list[ls].rb;
}

Или даже:

var lin = list[ls].rb;
if (lin) {
    // do whatever you needed to do with lin
}
Другие вопросы по тегам