You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何设置变量获取Data Layer中全部已购SKU数组值?

提取Data Layer数组中所有已购SKU的方法

嘿,这个问题很常见,我来给你一步步解决!要从transactionProducts数组里提取所有SKU并格式成'1234', '5678', '9012'这样的字符串,你可以用JavaScript的数组方法轻松实现,不管是在代码里还是GTM这类工具的自定义变量中都适用。

核心思路

我们只需要完成两个关键步骤:

  1. 遍历数组,把每个元素的sku值提取出来,同时给每个SKU加上单引号
  2. 把这些带引号的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 06:42:42