I'm trying to push data into an array within an object. The array is an array of objects (it's clearer in the code).
The main code works, it splits my payload correctly but the main ecommObj doesn't output the array correctly.
Please help.
I've tried using concat, push, push.apply and finally I've left an "=" in there. I'm just out of ideas.
var siteMerch = [
{"placement": "homepage","position": "T1","campaignName": "poloshirts","campaignStartDate": "12-08-19"},
{"placement": "homepage","position": "T2","campaignName": "groomingbestsellers","campaignStartDate": "12-08-19"},
{"placement": "homepage","position": "T3","campaignName": "journalhowtobuyasuitonline","campaignStartDate": "12-08-19"},
{"placement": "homepage","position": "WN","campaignName": "newarrivals","campaignStartDate": "12-08-19"},
{"placement": "homepage","position": "C1","campaignName": "fourwaystorunbetter","campaignStartDate": "15-08-19"},
{"placement": "homepage","position": "M1","campaignName": "mrpcap8tshirts","campaignStartDate": "12-08-19"},
{"placement": "homepage","position": "T1","campaignName": "poloshirts","campaignStartDate": "12-08-19"},
{"placement": "homepage","position": "T2","campaignName": "groomingbestsellers","campaignStartDate": "12-08-19"},
{"placement": "homepage","position": "T3","campaignName": "journalhowtobuyasuitonline","campaignStartDate": "12-08-19"},
{"placement": "homepage","position": "WN","campaignName": "newarrivals","campaignStartDate": "12-08-19"},
{"placement": "homepage","position": "C1","campaignName": "fourwaystorunbetter","campaignStartDate": "15-08-19"},
{"placement": "homepage","position": "M1","campaignName": "mrpcap8tshirts","campaignStartDate": "12-08-19"}
];
var payLoad = 5;
var del = "-_-";
var chunk = [];
var promotions = siteMerch.map(function(i){
let promotion = {
'id':i.placement + del + i.campaignName + del + i.campaignStartDate + del + i.position,
'name':i.campaignName + " - " + i.campaignStartDate,
'creative':i.placement,
'position':i.position
}
return promotion;
})
var ecommObj = {
event: 'EEC Promo View',
ecommerce: {
promoView: {
promotions: []
}
}
};
while (promotions.length) {
chunk = promotions.splice(0,payLoad);
ecommObj.ecommerce.promoView.promotions = chunk; //The issue is HERE.
console.log(ecommObj); //This will be a dataLayer push later on, I'm just checking it first
ecommObj.ecommerce.promoView.promotions.length = 0;
}
I'd want my ecommObj.ecommerce.promoView.promotions
to contain payloads of 5 objects in there but currently the console shows the output to have a blank array.