Reputation: 505
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
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
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