当前位置:   jquery > 正文

如何正确使用dataLayer.push()更新数组中嵌套对象的值?

javascript,arrays,google-analytics,google-tag-manager,google-datalayer,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端开发工具,开发人员工具,站长工具

这是我的dataLayer数组:

dataLayer = [{
  'giftBatch' : {
    'giftID': '',
    'giftAmount': 0,
    'giftCount': 0,
    'giftUpdate': {
      'giftPhase': 'Gift Empty'
    }
  },
  'txBatch': {
    'txID': '',
    'txTotal': 0,
    'txURL': window.location.href,
    'txUpdate': {
      'txPhase': 'Transaction Opened',
      'txT0': new Date(),
      'txT1': ''
      'txT2': ''
    }
  }
}];

控制台结果为:Array [Object1]

根据需要,Object1包含“ giftBatch”和“ txBatch”对象。

我有一个触发器,稍后触发以更新dataLayer中的对象。

例如,将“ giftAmount”更新为50,将“ giftCount”更新为1。

我尝试了以下方法(我仅展示了一次修改“一个对象”的失败尝试),

尝试1:

dataLayer.push({giftAmount : 50});

结果:

数组[object1,object2]

Object1与上面相同,

Object2是一个新对象,其属性为'Gift Amount':50

尝试2:

dataLayer.push({giftBatch.giftAmount: 222});

结果: SyntaxError:缺少:属性ID之后

尝试3:

dataLayer.push({'giftBatch.giftAmount' : 50});

结果:

数组[object1,object2]

Object1与上面相同,

Object2是一个具有'giftBatch.giftAmount'属性的新对象:50

我在这里做错了什么?

根据此处的dataLayer部分:https : //support.google.com/tagmanager/answer/6106899?hl= zh-CN

我应该能够编辑嵌套对象的值。

PS。这就是我现在正在使用的,并且确实有效。但是,为什么不推动工作呢?

dataLayer[index].giftBatch.giftAmount = 50;

其中index是Object2的索引。

任何帮助都会很棒。

谢谢。



1> lossleader..:

不好的做法是编辑dataLayer的现有内容,但是您只需要发送覆盖属性值,如下所示:

dataLayer.push({'giftBatch':{'giftAmount' : 50}});

标记管理器最晚启动,Object并且将继续向后浏览先前的Objects,以确定每个DataLayer变量的当前设置,因此只有giftBatch.giftAmount此新推送才能覆盖它。

这是预览调试器的示例,显示了新testObject 的dataLayer合并视图以及以前消息中的属性:

解释此调试器数据层视图

在这种情况下,先前的消息(#4和/或#5)至少推送了:

 {test:{test:8}} // #6 does not contain test.test so it is from earlier

或他们最多可以推动:

 {test:{test:..,foo:..,test3:..}} // #4 if it's been completely shadowed
 {test:{test:8,foo:..,test3:..}} // #5 if it has test.test, must have 8

没有标签可以像Messages缺少event属性的对象一样在#3和#7之间触发,因此,当跟踪可能随后发生在事件#7上触发的标签上发生跟踪时,应将#4&#5的任何阴影值视为不可访问。


完全是@rorschaff,但是您不必信服,预览调试器将向您显示添加的内容以及对每条消息的有效dataLayer和变量的影响。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/jquery/detail/13470
推荐阅读
相关标签
  

闽ICP备14008679号