有没有办法删除数据层中的对象?
Is there a way to remove object in the datalayer?
有没有办法删除数据层中的对象?如图所示,有两个 'google_tag_params' 对象。我只需要一个。第一次推送是 onload,然后第二次推送是在 js 调用中的 dataLayer 上。我需要在推送第二个之前先删除推送的一个,这样数据层
中就没有重复的 'google_tag_params'
dataLayer.push(
{ "google_tag_params":google_tag_params,
"ecomm_prodid":document.getElementById('prodid').value,
"ecomm_pagetype": document.getElementById('pageType').value,
"ecomm_totalvalue": price.toFixed(2),
});
使用数组Filter
//es6
dataLayer = dataLayer.filter(x=>!x.google_tag_params);//removes any object
// which has a key google_tag_params, guessing that its value won't be falsy
// better use x => !(google_tag_params in x)
dataLayer.push(newGoogleTagParam);
//es5
dataLayer = dataLayer.filter(function (x) {
return !x.google_tag_params;
});
dataLayer.push(newGoogleParam);
您可以通过setting未定义值的键从数据层中删除数据。示例:
window.dataLayer.push(function(){ this.set('google_tag_params') });
请注意,在您的场景中 google_tag_params
可能 被推送两次是有充分理由的。只要两个对象都包含各自标签的所有相关数据,每个标签就会触发相关数据。但是如果你想绝对确定第二个没有从第一个继承数据,你可以运行上面的代码在两次推送之间清除那个键的数据。
有没有办法删除数据层中的对象?如图所示,有两个 'google_tag_params' 对象。我只需要一个。第一次推送是 onload,然后第二次推送是在 js 调用中的 dataLayer 上。我需要在推送第二个之前先删除推送的一个,这样数据层
中就没有重复的 'google_tag_params'dataLayer.push(
{ "google_tag_params":google_tag_params,
"ecomm_prodid":document.getElementById('prodid').value,
"ecomm_pagetype": document.getElementById('pageType').value,
"ecomm_totalvalue": price.toFixed(2),
});
使用数组Filter
//es6
dataLayer = dataLayer.filter(x=>!x.google_tag_params);//removes any object
// which has a key google_tag_params, guessing that its value won't be falsy
// better use x => !(google_tag_params in x)
dataLayer.push(newGoogleTagParam);
//es5
dataLayer = dataLayer.filter(function (x) {
return !x.google_tag_params;
});
dataLayer.push(newGoogleParam);
您可以通过setting未定义值的键从数据层中删除数据。示例:
window.dataLayer.push(function(){ this.set('google_tag_params') });
请注意,在您的场景中 google_tag_params
可能 被推送两次是有充分理由的。只要两个对象都包含各自标签的所有相关数据,每个标签就会触发相关数据。但是如果你想绝对确定第二个没有从第一个继承数据,你可以运行上面的代码在两次推送之间清除那个键的数据。