我试图编写一个非常简单的程序,将一个数组分成另一个由定义大小的小数组组成的数组,但是push()
方法不起作用。 能否有人帮助我解决这个问题?
function chunk(array, size) {
var newArray = [];
var tempArray = [];
for (let i = 0; i < array.length / size; i++) {
for (let j = size * i, k = 0; j < size * i + size; j++, k++)
tempArray[k] = array[j];
newArray.push(tempArray);
}
return newArray;
}
var data = [1, 2, 3, 4, 5, 6, 7, 8];
console.log(chunk(data, 2));
理想输出应该是
[[1, 2],[3, 4], [5, 6], [7, 8]]
。
但是我得到了[[7,8],[7,8],[7,8],[7,8]]
。
var tempArray = [];
移至你的第一个 for 循环内部。目前,你每次都在推入相同的数组引用,因此对它所做的修改会影响到数组内部。 - Nick Parsonstemparray
,然后覆盖其元素并多次推送相同的数组。 - derpirscher