push() 方法在 JavaScript 中无法正常工作

Alo*_*ñón 5 javascript array-push

我正在尝试编写一个非常简单的程序,该程序将一个数组划分为另一个定义大小的较小数组的数组,但是该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));
Run Code Online (Sandbox Code Playgroud)

理想的输出应该是[[1, 2],[3, 4], [5, 6], [7, 8]]。但是我得到了[[7,8],[7,8],[7,8],[7,8]]

Beh*_*oth 6

您快到了。只需将tempArray定义移动到您的第一个for循环中即可。否则,您每次都会推送相同的数组。

工作示例:

function chunk(array, size) {
  const newArray = [];

  for (let i = 0; i < array.length / size; i++) {
    const tempArray = [];
    for (let j = size * i, k = 0; j < size * i + size; j++, k++)
      tempArray[k] = array[j];

    newArray.push(tempArray);
  }

  return newArray;
};

const data = [1, 2, 3, 4, 5, 6, 7, 8];

console.log(chunk(data, 2)); // [[1, 2],[3, 4], [5, 6], [7, 8]]
Run Code Online (Sandbox Code Playgroud)