如何设置变量获取Data Layer中全部已购SKU数组值?
提取Data Layer数组中所有已购SKU的方法
嘿,这个问题很常见,我来给你一步步解决!要从transactionProducts数组里提取所有SKU并格式成'1234', '5678', '9012'这样的字符串,你可以用JavaScript的数组方法轻松实现,不管是在代码里还是GTM这类工具的自定义变量中都适用。
核心思路
我们只需要完成两个关键步骤:
- 遍历数组,把每个元素的
sku值提取出来,同时给每个SKU加上单引号 - 把这些带引号的SKU用「逗号+空格」连接成一个完整的字符串
基础实现代码
假设你的Data Layer里的transactionProducts是类似这样的数组:
const transactionProducts = [ { sku: '1234', name: '商品A' }, { sku: '5678', name: '商品B' }, { sku: '9012', name: '商品C' } ];
用下面的代码就能直接得到你想要的结果:
const allSkus = transactionProducts .map(product => `'${product.sku}'`) // 给每个SKU包裹单引号 .join(', '); // 用逗号+空格拼接成字符串 console.log(allSkus); // 输出:'1234', '5678', '9012'
处理边界情况
如果数组可能为空,或者部分商品没有sku字段,可以加一点容错处理,避免出现无效内容:
const allSkus = transactionProducts.length > 0 ? transactionProducts .map(product => product.sku ? `'${product.sku}'` : '') .filter(Boolean) // 过滤掉空的SKU项 .join(', ') : '';
在GTM中设置自定义变量
如果你是在Google Tag Manager里配置变量,创建一个自定义JavaScript变量,把下面的代码放进去即可:
function() { // 替换成你获取transactionProducts的变量名 const products = {{transactionProducts}}; // 先判断数组是否有效 if (!products || !Array.isArray(products)) return ''; return products .map(product => product.sku ? `'${product.sku}'` : '') .filter(Boolean) .join(', '); }
这样设置后,这个变量就会自动返回所有已购SKU的组合字符串啦!
内容的提问来源于stack exchange,提问作者Adam Gl
相关产品推荐
相关产品推荐

