2015-05-21 2 views
1

Я пытаюсь перебрать переменную pieces, но почему-то это не запускается. В приведенной ниже функции pieces.length поворачивается 4, но piecesNew оборотов [] - кроме того console.log(i) так и не дошел.Не могу попасть внутрь цикла for (Javascript)

Что происходит?

self.reworkPieces = function(pieces) { 

     var piecesNew = []; 

     console.log(pieces.length) 

     for (var i; i <= pieces.length; i++) { 

      console.log(i) 

      piecesNew[i] = { 
       c: pieces[i].r, 
       r: pieces[i].c, 
       p: i 
      } 

     } 

     console.log(piecesNew) 

     return piecesNew; 

    }; 
+2

установить 'i' 0 ... – MMM

+0

Какая потребность в теге 'angularjs' здесь? – Arulkumar

+0

удален angularjs tag – JohnAndrews

ответ

7

undefined не меньше, чем или больше, чем любое число.

var i; // undefined 
i < 10; // false 
i > 10; // false 

Вам просто нужно убедиться, что i равно 0.

Вы также хотите i никогда не будет равна pieces.length так использовать < вместо <= (последний индекс массива всегда length - 1, например, массив длиной 3 имеет индексы 0, 1 и 2 - первый индекс всегда 0, а не 1)

Итак:

for (var i = 0; i < pieces.length; i++) { 
    ... 
+1

Точнее, любое сравнение числа с неопределенным является ложным. –

+0

@ DanielCook: Не верно, 'undefined! = 0' is' true', если вы рассматриваете это как сравнение – MMM

+0

Спасибо, я понимаю сейчас! – JohnAndrews

2
self.reworkPieces = function(pieces) { 

    var piecesNew = []; 

    console.log(pieces.length) 

    for (var i = 0; i <= pieces.length; i++) { 

     console.log(i) 

     piecesNew[i] = { 
      c: pieces[i].r, 
      r: pieces[i].c, 
      p: i 
     } 

    } 

    console.log(piecesNew) 

    return piecesNew; 

}; 
2

Изменение:

for (var i; i <= pieces.length; i++) 

To:

for (var i = 0; i < pieces.length; i++) 
3

определить значение переменной я, var i = 0

self.reworkPieces = function(pieces) { 

     var piecesNew = []; 

     console.log(pieces.length) 

     for (var i = 0; i <= pieces.length; i++) { 

      console.log(i) 

      piecesNew[i] = { 
       c: pieces[i].r, 
       r: pieces[i].c, 
       p: i 
      } 

     } 

     console.log(piecesNew) 

     return piecesNew; 

    }; 
1

Initialize вар я = 0 изначально, то он будет работать

self.reworkPieces = function(pieces) { 

      var piecesNew = []; 

      console.log(pieces.length) 

      for (var i = 0; i <= pieces.length - 1; i++) { 

       console.log(i) 

       piecesNew[i] = { 
        c: pieces[i].r, 
        r: pieces[i].c, 
        p: i 
       } 

      } 

      console.log(piecesNew) 

      return piecesNew; 

     }; 
+0

это для цикла (var i = 0; i <= pieces.length - 1; i ++) только перебирает элемент массива от нуля до последнего индекса –

Смежные вопросы