2015-12-06 2 views
-3

Клянусь Богом, это работало, я знаю, это было потому, что мой тест проходил некоторое время ... теперь это не так. См. Снимок экрана ошибки ниже.Для петли ES6 больше не работает

describe('',() => { 

    let newBoard; 

    beforeEach(() => { 
     newBoard = new board(); 
    }); 

    it('',() => { 
     for(let row in newBoard){ 
      for(let column in row){ 
       newBoard[row][column].should.equal(""); 
      } 
     } 
    }); 
}); 

board.js

module.exports = function(){ 
    return [["", "", ""], 
      ["", "", ""], 
      ["", "", ""]]; 
}; 

enter image description here

+0

, что это 'newBoard'? –

+6

Это никогда не могло работать так, как ожидалось ... Второй цикл должен быть 'for (let column in newBoard [row])'. (или использовать цикл for-loop). –

+0

@LeeTaylor говорит на скриншоте: 'newBoard: Array [3]' – Stijn

ответ

0

Хотя замечание @RobW следует проблема: for (let column in newBoard[row]).

Я хотел бы добавить предложение: так как вы используете ES6 вы можете использовать for of цикл:

it('',() => { 
    for(let row of newBoard){ 
     for(let cell of row){ 
      cell.should.equal(""); 
     } 
    } 
}); 
-1

В вашем внутреннем цикле вы просите его, чтобы создать переменную column для каждого элемента объекта, который является номером. Конструкция for in дает вам индекс каждого элемента в массиве newBoard.

Внутренние петли необходимо получить доступ к массиву по индексу заданного для newBoard так, что ваш код становится for(let column in newBoard[row])

0

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

Новая цепь ES6, которую вы ищете, называется for-of loop. Это задача перебора элементов в массиве. В вашем примере попробуйте изменить код для использования цикла for-loop.

it('',() => { 
    for(let row of newBoard){ 
     for(let column of row){ 
      column.should.equal(""); 
     } 
    } 
}); 
+0

Неверный код – CoderPi

+0

Я попробовал оба для и для – PositiveGuy

+0

это должно быть 'для (пусть ячейка строки) {cell.should.equal (" "); } ' – CoderPi

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