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

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

我目前正在学习如何使用dataLayer并将其应用于网站。从我阅读的所有内容中,最佳实践是在更新dataLayer时使用.push功能。

我知道,当您使用.push功能时,.push通常不会更新数组内部的对象的值,它只会在另一个对象的末尾附加具有相同键和新值的对象。 Google跟踪代码管理器已对.push功能进行了修补,以使其可以查看密钥是否存在并更改其值,或者如果不存在,则向该数组添加一个新对象。

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

谢谢!

javascript analytics launch
1个回答
0
投票

最终找到了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
        }
© www.soinside.com 2019 - 2024. All rights reserved.