1

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

2 Answers 2

3

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/

Sign up to request clarification or add additional context in comments.

2 Comments

almost working, you have element 1 in 5the array and not in first
@lordkain So does the OP :)
1
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);

1 Comment

Thanks and +1 for the solution

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.