我正在为电子商务网站实施Google跟踪代码管理器。

不幸的是,我们无法对DataLayers进行硬编码。因此,我正在寻找解决方法。我以为可以自己使用Google标记管理器和自定义javascript宏来实现数据层。
我正在从事购买活动。
我成功地刮取了购买确认页面,并且得到了三个变量productName,productId和productPrice。目前我只需要这些。在同一笔交易中购买多个产品的情况下,这三个变量作为数组出现。因此,变量看起来如下所示。

现在,我的目标是将数据格式化为数据层格式,以便可以在GTM和GA中使用。

请参阅下面的代码

谢谢你的帮助!

插口

//this is what I currently have

var productName = [ 'Product A', 'Product B', 'Product C']
var productId = ['1111', '2222', '3333']
var productPrice = [2.99, 4.95, 6.95]



//this is the format I want to achieve

var products = [{
        'name': 'Product A',
        'id': '1111',
        'price': '2.99'
       },
       {
        'name': 'Product B',
        'id': '2222',
        'price': '4.95'
        },
        {
        'name': 'Product C',
        'id': '3333',
        'price': '6.95'
       }]

最佳答案

这可以工作,但是我不确定所有浏览器都支持



var column = ['name', 'id', 'price']
var productName = ['Product A', 'Product B', 'Product C']
var productId = ['1111', '2222', '3333']
var productPrice = [2.99, 4.95, 6.95]
var agg = [productName, productId, productPrice];
var row = Object.keys(agg[0])
        .map(colNumber => agg.map(rowNumber => rowNumber[colNumber]))
var arr = row.map(function(row) {
  return row.reduce(function(result, field, index) {
    result[column[index]] = field;
    return result;
  }, {});
});

var products = arr.reduce(function(acc, cur, i) {
  acc[i] = cur;
  return acc;
}, {});

console.log(products)

07-26 05:46
查看更多