2015-12-06 136 views
-3

我向上帝发誓这工作,我知道这是因为我的测试传递了一段时间......现在它不。请参阅下面的错误屏幕截图。For循环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(让列在newBoard [row]中)。 (或使用for-of循环)。 –

+0

@LayTaylor它在屏幕截图中说:'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-for循环。

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

代码错了 – CoderPi

+0

我试过了而对于 – PositiveGuy

+0

它应该是'for(let cell of row){cell.should.equal(“”); }' – CoderPi