2016-06-14 21 views
0

我收到以下錯誤Uncaught TypeError:無法讀取未定義的屬性'push'。應該做什麼?

"Uncaught TypeError: Cannot read property 'push' of undefined"

當我試圖運行下面的代碼:

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)); 

誰能幫助?

+8

你在調用數組中的一個地方,而不是數組本身 – aw04

回答

0

你忘了一個空數組初始化每個塊。下面更正代碼:

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)); 
0

而不是

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

這樣做

arr_final.push(arr[i]); 
0

爲了分裂您輸入陣列爲多個塊長度爲≤大小,你需要初始化一個新的空塊的迭代變量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));

相關問題