为什么这个for循环是无限循环,尽管条件?

时间:2016-09-12 17:43:32

标签: javascript loops

下面这个函数是创建数组切片而push是无限循环。任何人都可以试图证明这一点。

dfv

我可以通过下面的while循环实现我的要求,虽然看起来几乎相似。

SettingWithCopyWarning
  

示例输入: - myFunction([“a”,“b”,“c”,“d”],2);

     

样本输出: - [[“a”,“b”],[“c”,“d”]]

2 个答案:

答案 0 :(得分:10)

我认为i+size应为i += sizei = i + size

在第一个循环中,您永远不会递增i

修改

您可能还想更改循环体以匹配while循环。

例如,将所有这些放在一起,这个for循环应该等同于while循环:

for (var i = 0; i < arr.length; i += size) {
    newArr.push(arr.slice(i, i + size));
}

答案 1 :(得分:1)

在for循环中,您永远不会递增变量i。这就对了。 i++自动递增i,但i+size没有。

它应该是 i=i+sizei+=size;

希望这有帮助。

修改

你的for循环应该是: -

function MyFunction(arr, size) {
  var  newArr = [];

  for(var i=0; i<arr.length; i = i+size)    
   {  
    newArr.push(arr.slice(0,size));

   }  
  return newArr;
}