将多个对象推入数据层

问题描述 投票:0回答:1

我有以下 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
}
javascript arrays object google-datalayer
1个回答
0
投票

如果我正确理解了问题,可以这样完成

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();
© www.soinside.com 2019 - 2024. All rights reserved.