下面这个函数是创建数组切片而push是无限循环。任何人都可以试图证明这一点。
dfv
我可以通过下面的while循环实现我的要求,虽然看起来几乎相似。
SettingWithCopyWarning
示例输入: - myFunction([“a”,“b”,“c”,“d”],2);
样本输出: - [[“a”,“b”],[“c”,“d”]]
答案 0 :(得分:10)
我认为i+size
应为i += size
或i = 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+size
或i+=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;
}