簡體   English   中英

Uncaught TypeError:無法讀取未定義的屬性“ push”。 應該做什么?

[英]Uncaught TypeError: Cannot read property 'push' of undefined. What should be done?

我收到以下錯誤

“未捕獲的TypeError:無法讀取未定義的屬性'push'”

當我嘗試運行以下代碼時:

function chunkArrayInGroups(arr, size) {
  // Break it up.

   var arr_final=[];
   for(var i=0,j=0;i<arr.length;i++)
   {
    arr_final[j].push(arr[i]);
    if(i===size)
    {
        j++;
    }
   }
   return arr_final;
}

console.log(chunkArrayInGroups(["a", "b", "c", "d"], 2));

有人可以幫忙嗎?

代替

arr_final[j].push(arr[i]);

做類似的事情

arr_final.push(arr[i]);

您忘記了使用空數組初始化每個塊。 更正了以下代碼:

function chunkArrayInGroups(arr, size) {
  // Break it up.

  var arr_final=[[]]; // <-- initialize chunk
  for(var i=0,j=0;i<arr.length;i++)
  {
    arr_final[j].push(arr[i]);
    if(i===size)
    {
      arr_final.push([]); // <-- initialize chunk
      j++;
    }
  }
  return arr_final;
}

console.log(chunkArrayInGroups(["a", "b", "c", "d"], 2));

我猜你的分塊邏輯中也有一個錯誤,所以你可能真正想要的是:

function chunkArrayInGroups(arr, size) {
  // Break it up.

  var arr_final=[];
  for(var i=0,j=-1;i<arr.length;i++)
  {
    if (i % size === 0) {
      arr_final.push([]);
      j++;
    }
    arr_final[j].push(arr[i]);
  }
  return arr_final;
}

console.log(chunkArrayInGroups(["a", "b", "c", "d"], 2));

為了將輸入數組拆分為長度arr_final.push([])多個塊,每次迭代器變量i達到size的倍數時,您都需要初始化一個新的空塊arr_final.push([]) -您可以通過取模來檢查操作員:

 function chunkArrayInGroups(arr, size) { // Break it up. var arr_final = []; for (var i = 0, j = -1; i < arr.length; ++i) { if (i % size == 0) { arr_final.push([]); j++; } arr_final[j].push(arr[i]); } return arr_final; } console.log(chunkArrayInGroups(["a", "b", "c", "d", "e"], 3)); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM