Tech Solvr
Tech Solvr

Reputation: 505

How to break an array after certain limit in Javascript

Following is my array that I need to break in parts, i.e to break into parts of 2 as shown below -

Array to iterate -

[
    {elem: 1},
    {elem: 2},
    {elem: 3},
    {elem: 4},
    {elem: 5},
    {elem: 6},
    {elem: 7},
    {elem: 8},
    {elem: 9}
]

Desired Output -

[
 {week1: [{elem: 1},{elem: 2}]},
 {week2: [{elem: 3},{elem: 4}]},
 {week3: [{elem: 5},{elem: 6}]},
 {week4: [{elem: 7},{elem: 8}]},
 {week5: [{elem: 9}]},
]

Following is the code I am trying but somehow breaking, let me know what I am doing wrong here -

My Code -

var myArr = [
    {elem: 1},
    {elem: 2},
    {elem: 3},
    {elem: 4},
    {elem: 5},
    {elem: 6},
    {elem: 7},
    {elem: 8},
    {elem: 9}
];

var arrayBreakNum = 2;
var newArr = [];
var weekNum = 1;

for(var i=1; i<= myArr.length; i++) {
    newArr.['week'+weekNum].push(myArr[i]);
    if(i%2 == 0)
        weekNum = weekNum + 1;
}

console.log(newArr);

Upvotes: 1

Views: 55

Answers (2)

Philipp Sander
Philipp Sander

Reputation: 10249

var myArr = [
    {elem: 1},
    {elem: 2},
    {elem: 3},
    {elem: 4},
    {elem: 5},
    {elem: 6},
    {elem: 7},
    {elem: 8},
    {elem: 9}
];

var arrayBreakNum = 2;
var newArr = [];
var weekNum = 1;

for(var i=1; i<= myArr.length; i++) {
    //you need to create an empty array
    if(!newArr['week'+weekNum]) {
        newArr['week'+weekNum] = [];
    }

    newArr['week'+weekNum].push(myArr[i]); //you had an unessecary . in this line
    if(i%2 == 0) {
        weekNum = weekNum + 1;
    }
}

console.log(newArr);

Upvotes: 1

Curtis
Curtis

Reputation: 103388

There are a few things you need to change:


Theres a syntax error here:

newArr.['week'+weekNum].push(myArr[i]);

Change to:

newArr['week'+weekNum].push(myArr[i]);

You're trying to push to an array you haven't yet initialised here:

newArr.['week'+weekNum].push(myArr[i]);

Change to:

newArr['week'+weekNum] = [];
for(var i=1; i<= myArr.length; i++) {
    newArr['week'+weekNum].push(myArr[i]);
    if(i%2 == 0){
        weekNum = weekNum + 1;
        newArr['week'+weekNum] = [];
    }
}

Working Example: http://jsfiddle.net/6e6d3fuv/

Upvotes: 3

Related Questions