Как мне обновить объект в массиве, используя .push, как это делает GTM - PullRequest
0 голосов
/ 21 октября 2019

В настоящее время я изучаю, как использовать и применять dataLayer к веб-сайту. Из всего, что я прочитал, лучше всего использовать функциональность .push при обновлении вашего dataLayer.

Я знаю, что .push обычно не обновляет значение объекта, которое находится внутри массива, когда вы используете функциональность .push, он просто добавляет другой объект с тем же ключом и новым значением в конец его,Менеджер тегов Google исправил функцию .push, чтобы он мог увидеть, существует ли ключ и изменить его значение или, если он не существует, добавить новый объект в массив.

Как GTM выполняет это, и я могу написать код, чтобы сделать это сам? Вторичный вопрос, поскольку я использую Adobe Analytics на этом веб-сайте, имеет ли AA / Launch такую ​​же функциональность? Я могу захотеть обновить что-то в dataLayer и не буду знать, что это индекс в массиве.

Спасибо!

1 Ответ

0 голосов
/ 21 октября 2019

Закончено нахождение функции, которую GTM использует для отмены функции push. Размещать его здесь на случай, если у кого-то возникнет вопрос в будущем. Теперь, чтобы увидеть, могу ли я понять это, LOL

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
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...