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

如何将GTM中JS变量获取的item_name数组转为逗号分隔文本?

解决GTM中提取dataLayer商品名称并转为逗号分隔文本的问题

问题背景

需要在purchase事件的dataLayer中仅捕获item_name字段,用于其他营销标签。直接调用ecommerce.items会返回完整商品对象,dataLayer变量无法满足需求,自行编写的GTM JavaScript变量返回数组格式,希望转为逗号分隔的文本,尝试for循环后未解决。

原代码与dataLayer示例

原GTM JavaScript变量代码

var itemslist = [];
var products = {{dl - ecommerce - item name}};
for(i=0; i < products.length; i++){
  itemlist.push(
    'item_name': products[i].item_name
 )
}                
return itemlist;

完整dataLayer示例

{
   "event": "purchase",
   "ecommerce": {
      "transaction_id": 0000,
      "affiliation": "xxxx",
      "value": 222,
      "currency": "USD",
      "coupon": "No coupon",
      "items": [
         {
            "item_id": "4291",
            "item_name": "xyz",
            "affiliation": "xxx",
            "coupon": "No coupon",
            "item_category": "us",
            "currency": "USD",
            "discount": "0.00",
            "index": 0,
            "price": 111,
            "quantity": 1
         },
         {
            "item_id": "xxx",
            "item_name": "abc",
            "affiliation": "xxx",
            "coupon": "No coupon",
            "item_category": "us",
            "currency": "USD",
            "discount": "0.00",
            "index": 1,
            "price": 111,
            "quantity": 1
         }
      ]
}

原代码问题分析

  1. 语法错误:push方法中使用了对象键值对语法'item_name': products[i].item_name,不符合数组push的参数要求,会导致代码执行失败。
  2. 未转换格式:仅返回存储item_name的数组,没有将数组转为逗号分隔的字符串。

修正后的代码

方案一:使用map+join(简洁写法)

var products = {{dl - ecommerce - item name}};
// 增加空值判断,避免dataLayer数据异常时报错
if (!products || !Array.isArray(products)) {
  return '';
}
// 提取所有item_name并转为逗号分隔的字符串
return products.map(item => item.item_name).join(', ');

方案二:使用for循环(兼容旧环境写法)

var itemslist = [];
var products = {{dl - ecommerce - item name}};
// 先判断数据有效性
if (products && Array.isArray(products)) {
  for(var i = 0; i < products.length; i++){
    // 直接push item_name字符串,而非对象
    itemslist.push(products[i].item_name);
  }
}
// 将数组转为逗号分隔的文本
return itemslist.join(', ');

说明

  • 增加了空值判断逻辑,防止dataLayer中缺失ecommerce.items或格式错误时出现控制台报错。
  • 两种方案最终都会将提取到的item_name转为类似xyz, abc的逗号分隔文本,满足营销标签的格式需求。

内容的提问来源于stack exchange,提问作者SGDM

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 00:10:20