gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:32:41 25 4
gpt4 key购买 nike

这是我的数据层数组:

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: missing : after property id

尝试 3:

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

结果:

数组[object1, object2]

Object1同上,

Object2 是一个新对象,其属性为 'giftBatch.giftAmount': 50

我在这里做错了什么?

根据此处的数据层部分:https://support.google.com/tagmanager/answer/6106899?hl=en

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

附言。这就是我现在正在使用的,它确实有效。但是,为什么 push 不起作用?

dataLayer[index].giftBatch.giftAmount = 50;

其中 index 是 Object2 的索引。

任何帮助都会很棒。

谢谢。

最佳答案

编辑 dataLayer 的现有内容是不好的做法,但您应该只需要像这样发送覆盖属性值:

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

标签管理器从最新的 Object 开始,并会不断向后查看之前的 Objects 以确定每个 DataLayer 变量的当前设置,因此只有 giftBatch.giftAmount 被覆盖有了这个新的插入。

这里是一个预览调试器的例子,它显示了一个新的 test 对象的 dataLayer 合并 View ,该对象具有以前消息的属性:

GTM preview debugger DataLayer view

解释这个调试器数据层 View

在这种情况下,以前的消息(#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

#3 和#7 之间没有标签可以触发,因为 Messages 是缺少 event 属性的对象,因此在以下情况下,#4 中的任何阴影值都应被视为不可访问接下来可能会在事件 #7 触发的标签上进行跟踪。

关于javascript - 如何正确使用 dataLayer.push() 来更新数组中嵌套对象的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34212960/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com