Skip to content Skip to sidebar Skip to footer

Make Nested Array To Group Array Elements

I have array: arr = [1,2,3,4,5,6,7,8,9,10,11,12,13,14]; Then I want to make group of 4 elements. Every iteration, this array must be modified until it get's final face. Step 1: ar

Solution 1:

Using Array#reduce method.

const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], 
newArr = arr.reduce((acc, item, index) => {
    if ((index) % 4 === 0) {
        acc.push([item]);
    } else {
        acc[acc.length - 1].push(item);
    }
    return acc;
}, []);

console.log(newArr); // [ [ 1, 2, 3, 4 ], [ 5, 6, 7, 8 ], [ 9, 10, 11, 12 ], [ 13, 14 ] ]

Solution 2:

You could splice the array until the length is smaller than the index of the last insertation.

var array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14],
    i = 0;
    
while (i < array.length) {
    array.splice(i, 0, array.splice(i, 4));
    console.log(JSON.stringify(array));
    i++;
}

Solution 3:

lodash probably has better performances than my implementation, but if you are looking to do so with vanilla javascript then you can like this (though many other ways are possible):

var arr = [1,2,3,4,5,6,7,8,9,10,11,12,13,14];

var newArr = arr.reduce((acc, val, idx)=>{
	if(idx % 4 === 0){
  	acc.push([]);
  }
  acc[acc.length-1].push(val)
  return acc
}, [])

console.log(newArr);

Solution 4:

The lodash method chunk will do this for you.

result = _.chunk(arr, 4);

Solution 5:

functionchunkArray(myArray, chunk_size){
    var index = 0;
    var arrayLength = myArray.length;
    var tempArray = [];

    for (index = 0; index < arrayLength; index += chunk_size) {
        myChunk = myArray.slice(index, index+chunk_size);
        // Do something if you want with the group
        tempArray.push(myChunk);
    }

    return tempArray;
}
// Split in group of 3 itemsvar result = chunkArray([1,2,3,4,5,6,7,8], 3);
// Outputs : [ [1,2,3] , [4,5,6] ,[7,8] ]console.log(result);

Post a Comment for "Make Nested Array To Group Array Elements"