我有以下 JavaScript 函数,它将 1 个由 5 个键值组成的对象推送到数据层中。
function pollForDatalayer() {
if (typeof(dataLayer.push) === 'function') {
// The dataLayer.push function is defined, so you can run it here
for (var i = 0; i < campaigns.length; i++) {
var campaign = campaigns[i];
dataLayer.push({
'event': 'xxx',
'event_category': 'xxx',
'campaignName': campaign.key,
'experienceName': campaign.split,
'campaignID': campaign.variant_id
});
}
console.log("Data Layer Found.");
} else {
console.log("polling for Data Layer.");
setTimeout(pollForDatalayer, 5000);
}
}
pollForDatalayer();
如何确保可以将多个数组推送到数据层? 现在,如果我有 2 个或更多对象信息要存储到数据层中,则只会推送最后一个。不是第一个了。
我想获得的数据推送到数据层的最终结果示例:
{
"event": "xxx",
"event_category": "xxx",
"campaignName": "TEST-1",
"experienceName": "xxx",
"campaignID": xxx,
"gtm.uniqueEventId": xxx
},
{
"event": "xxx",
"event_category": "xxx",
"campaignName": "TEST-2",
"experienceName": "xxx",
"campaignID": xxx,
"gtm.uniqueEventId": xxx
}
如果我正确理解了问题,可以这样完成
function pollForDatalayer() {
if (typeof dataLayer.push === 'function') {
var dataToPush = [];
for (var i = 0; i < campaigns.length; i++) {
var campaign = campaigns[i];
var dataObject = {
event: 'xxx',
event_category: 'xxx',
campaignName: campaign.key,
experienceName: campaign.split,
campaignID: campaign.variant_id,
};
dataToPush.push(dataObject);
}
dataLayer.push.apply(dataLayer, dataToPush);
console.log('Data Layer Found.');
} else {
console.log('polling for Data Layer.');
setTimeout(pollForDatalayer, 5000);
}
}
pollForDatalayer();