Javascript 如何像GTM一样使用.push更新数组中的对象

Javascript 如何像GTM一样使用.push更新数组中的对象,javascript,analytics,launch,Javascript,Analytics,Launch,我目前正在学习如何在网站上使用和应用数据层。从我读到的所有内容来看,最佳实践是在更新数据层时使用.push功能 我知道,当您使用.push功能时,.push通常不会更新数组中的对象值,它只会将另一个具有相同键和新值的对象附加到它的末尾。Google Tag Manager修补了.push功能,允许它查看密钥是否存在并更改其值,或者如果不存在,则向数组添加新对象 GTM是如何做到这一点的,我可以自己编写代码来做到这一点吗?第二个问题,当我在这个网站上使用Adobe Analytics时,AA/La

我目前正在学习如何在网站上使用和应用数据层。从我读到的所有内容来看,最佳实践是在更新数据层时使用.push功能

我知道,当您使用.push功能时,.push通常不会更新数组中的对象值,它只会将另一个具有相同键和新值的对象附加到它的末尾。Google Tag Manager修补了.push功能,允许它查看密钥是否存在并更改其值,或者如果不存在,则向数组添加新对象

GTM是如何做到这一点的,我可以自己编写代码来做到这一点吗?第二个问题,当我在这个网站上使用Adobe Analytics时,AA/Launch是否具有相同的功能?我可能想更新数据层中的某些内容,但不知道它在数组中的索引


谢谢

最终找到了GTM用来覆盖推送功能的功能。在这里张贴,以防将来有人有问题。现在看看我是否能理解,哈哈

a.push = function() {
            var d;
            if (0 < Kc.SANDBOXED_JS_SEMAPHORE) {
                d = [];
                for (var e = 0; e < arguments.length; e++)
                    d[e] = new rg(arguments[e])
            } else
                d = [].slice.call(arguments, 0);
            var g = c.apply(a, d);
            wg.push.apply(wg, d);
            if (300 < this.length)
                for (Xc("GTM", 4); 300 < this.length; )
                    this.shift();
            var h = "boolean" !== typeof g || g;
            return Cg() && h
        }
a.push=function(){
变量d;
if(0
没什么复杂的,它只是用自己的实现覆盖了数组上的
push
方法。不过,我该如何编写一个函数来实现这一点呢?Adobe Launch是否具有与GTM相同的功能?您解决过这个问题吗?