如何将google DataLayer转换为javascript对象,其中包含变量的键值?

如何将google DataLayer转换为javascript对象,其中包含变量的键值?,javascript,google-tag-manager,google-datalayer,Javascript,Google Tag Manager,Google Datalayer,当您在网站上使用Google Analytics数据层时,您将其作为一个全局变量数据层。 您可以向其中添加自己的事件变量 如何将其中的所有变量转换为类似 {var:value} 您可以像访问任何其他对象一样访问它: var dataLayer = [{ myVar1: 'val1', myVar2: 'val2 }] var myVar1 = dataLayer[0].myVar1; var myVar2 = dataLayer[0].myVar2; 我不太明白你对纽恩回答的激

当您在网站上使用Google Analytics数据层时,您将其作为一个全局变量数据层。 您可以向其中添加自己的事件变量

如何将其中的所有变量转换为类似

{var:value}

您可以像访问任何其他对象一样访问它:

var dataLayer = [{
   myVar1: 'val1',
   myVar2: 'val2
}]

var myVar1 = dataLayer[0].myVar1;
var myVar2 = dataLayer[0].myVar2;

我不太明白你对纽恩回答的激烈反应。首先,因为这是javascript,所以数组也是一个对象,其次,数据层是一个对象数组,或者,正如我们在javascript中所称的,是一个对象(它毕竟被称为javascript对象表示法)。因此,您有一个带有数字索引的数组,其中每个元素都是一个对象(它可能反过来包含其他数组和对象)

不过,我强烈反对nyuen关于用数字索引处理数据层中的元素的建议。如果在标记管理器代码数据层[0]包含自定义数据之前将数据推送到数据层,如果不包含自定义数据,则将包含gtm.load事件和相关数据。所以这是不可靠的

然而,您真正想要的似乎是展平对象,即移除带有数字键的嵌套结构,并具有一维结构:

这将从嵌套对象生成“一维”对象。通常这意味着具有相同名称的键将被相应的最后一个元素覆盖。即

dataLayer = [
    {'key':value1},
    {'key':value2},
]
将导致一个简单的

{'key':value2}
因为第二个“键”覆盖了第一个。但是,上面的函数通过将索引存储为键名的一部分来缓解这一问题,因此

{'0.key':value1, '1.key':value2}
有点遗憾的是,这意味着您不能使用点语法,必须使用尖括号处理元素:

 yourvariablename['0.key']

数据层是一个特定于GTM的JSON对象。你能更具体地说明你想做什么吗?我想访问它的值,比如MyDataLayerVar.varName。尤其是那些不标准的(由用户推动的)变量。网站中的JS做了一些分析,并且想从数据层中考虑一些VAR来发送给服务器,你肯定不知道我在说什么。数据层变量是数组。对不起,我的语法不好,我的日子很长。但是你需要1)复习一下你的GTM,因为数据层是一个对象(更准确地说是一个对象数组,但通常只是一个对象),你只需要在谷歌上搜索一下,如果你像在文章中一样,自己花很少的精力去研究它,2)提供建设性意见,而不是针对数据不佳而对缺乏理解的人进行负面评论。
 yourvariablename['0.key']