如何创建GTM数据层变量提取产品数组的最后一项
报错原因
你之前配置products.slice(-1).name返回undefined的核心原因:
Array.slice(-1)返回的是包含最后一个元素的新数组,而非元素本身,需要先取数组的第0位才能拿到产品对象- GTM原生「数据层变量」类型不支持直接调用数组方法做链式操作,因此直接在数据层变量的配置框里写该表达式无法生效
解决方案(推荐用方案1,最简稳妥)
方案1:使用自定义JavaScript变量
在GTM中新建变量,类型选择「自定义JavaScript」,粘贴以下代码即可:
function() { // 此处{{DLV - products}}请替换为你自己配置的products数组对应的数据层变量名 const products = {{DLV - products}}; // 异常兜底,避免数据层未推送products时出现报错 if (!Array.isArray(products) || products.length === 0) return undefined; // 取数组最后一位元素的name属性,要取其他属性换成对应字段即可 return products[products.length - 1].name; }
方案2:多变量组合(不推荐)
如果不想写JS逻辑,也可以拆分多个变量实现:
- 新建数据层变量,配置
products.length,命名为DLV - products数组长度 - 新建自定义JavaScript变量,返回动态索引:
function() { return {{DLV - products数组长度}} - 1; }
- 新建数据层变量,配置为
products.{{你上一步创建的索引变量名}}.name即可
内容的提问来源于stack exchange,提问作者bledley
相关产品推荐
相关产品推荐

