2016-04-23 10 views
0

hier neues Array Ich versuche, basierend auf der Größe dynamischErste Fehler: Typeerror: kann nicht eingestellt Eigenschaft ‚0‘ undefinierter

zur Verfügung gestellt zu schaffen, warum dies geschieht?

function chunkArrayInGroups(arr, size) { 
 
    // Break it up. 
 
    var updatedarr = []; 
 
    for (var i = 0; i < arr.length; i++) { 
 
    for (var j = 0; j < size; j++) { 
 
     updatedarr[i][j] = arr[i]; 
 
    } 
 
    } 
 
    return updatedarr; 
 
} 
 
chunkArrayInGroups(["a", "b", "c", "d"], 2);

+0

Sie haben zu erstellen 'updatedarr [i]' in der äußeren Schleife vor der inneren Schleife. – Xufox

+0

'updatedarr [i]' sollte als 'array' definiert werden – Rayon

+0

Ich habe nicht verstanden – gowtham

Antwort

0

Sie können Brocken Ihr Array von,

function chunkArrayInGroups(arr, size) { 
    var updatedarr=[]; 
    for(var i =0;i<arr.length ;i+=size) { 
    updatedarr.push([]); 
    //pushing the array which gonna contain the chunk. 
    for(var j=i;j<i+size;j++) { // run loop from i to i+size ex: 0->2 when i = 0. 
    //picking the last chunk array and pushing the values 
     updatedarr[updatedarr.length - 1].push(arr[j]); 
    } 
    } 
    return updatedarr; 
} 

chunkArrayInGroups(["a", "b", "c", "d","e","f","g"], 2); 

Und der Ausgang wäre,

[["a","b"],["c","d"],["e","f"],["g"]] 

Gemäß der neuen Anforderung von Ihnen in Ihrem Kommentar , musst du brechen, wenn du mit einem undefinierten Treffer triffst.

function chunkArrayInGroups(arr, size) { 
    var updatedarr=[]; 
    for(var i =0;i<arr.length ;i+=size) { 
    updatedarr.push([]); 
    for(var j=i;j<i+size;j++) { 
     if(typeof arr[j] == "undefined") break; 
     updatedarr[updatedarr.length - 1].push(arr[j]); 
    } 
    } 
    return updatedarr; 
} 

chunkArrayInGroups([0, 1, 2, 3, 4, 5], 4); 

OUTPUT:

[[0, 1, 2, 3], [4, 5]] 
+0

würden Sie mir bitte erklären oben Code – gowtham

+0

@ Gowtham Gegeben einige Kommentare, hoffe, dass würde Hilfe. Für weitere Details können Sie einen Haltepunkt setzen und den Codefluss durchlaufen. –

+0

der obige Code erfüllt nicht die chunkArrayInGroups ([0, 1, 2, 3, 4, 5], 4) sollte zurückgeben [[0, 1, 2, 3], [4, 5]] – gowtham

Verwandte Themen