Web サイトで Google Analytics DataLayer を使用する場合、グローバル変数 dataLayer として使用します。独自のイベント変数を追加できます。
その中のすべての変数を次のようなオブジェクトに変換するにはどうすればよいですか
{var:value}
Web サイトで Google Analytics DataLayer を使用する場合、グローバル変数 dataLayer として使用します。独自のイベント変数を追加できます。
その中のすべての変数を次のようなオブジェクトに変換するにはどうすればよいですか
{var:value}
nyuens の回答に対するあなたの熱烈な反応がよくわかりません。第一に、これは JavaScript であるため、配列もオブジェクトです。第二に、dataLayer はオブジェクトの配列、または JavaScript で呼び出す場合はオブジェクトです (結局、JavaScript Object Notation と呼ばれます)。したがって、すべての要素がオブジェクトである数値インデックスを持つ配列があります (これには、他の配列やオブジェクトが含まれる場合があります)。
ただし、dataLayer の要素を数値インデックスでアドレス指定するという nyuen の提案には強く反対します。タグ マネージャー コード dataLayer[0] の前にデータを dataLayer にプッシュすると、カスタム データが含まれます。そうしないと、gtm.load イベントと関連データが含まれます。したがって、これは信頼できません。
ただし、オブジェクトをフラット化する、つまり、数値キーでネストされた構造を削除し、1 次元構造にすることが本当に必要なようです。幸いなことに、誰かがこれを行う関数を書いています:
var flattenObject = function(ob) {
var toReturn = {};
for (var i in ob) {
if (!ob.hasOwnProperty(i)) continue;
if ((typeof ob[i]) == 'object') {
var flatObject = flattenObject(ob[i]);
for (var x in flatObject) {
if (!flatObject.hasOwnProperty(x)) continue;
toReturn[i + '.' + x] = flatObject[x];
}
} else {
toReturn[i] = ob[i];
}
}
return toReturn;
};
これにより、ネストされたオブジェクトから「1 次元」オブジェクトが作成されます。通常、これは、同じ名前のキーがそれぞれの最後の要素によって上書きされることを意味します。いえ
dataLayer = [
{'key':value1},
{'key':value2},
]
簡単な結果になります
{'key':value2}
2 番目の「キー」が最初のキーを上書きするためです。ただし、上記の関数はインデックスをキー名の一部として保存することでこれを軽減するため、次のようになります。
{'0.key':value1, '1.key':value2}
残念ながら、これはドット構文を使用できず、要素を山括弧で指定する必要があることを意味します。
yourvariablename['0.key']
他のオブジェクトと同じようにアクセスします。
var dataLayer = [{
myVar1: 'val1',
myVar2: 'val2
}]
var myVar1 = dataLayer[0].myVar1;
var myVar2 = dataLayer[0].myVar2;