GTM 的 Javascript - 拆分电子商务数组名称元素值,然后将每个元素的最后一部分作为新数组返回

问题描述 投票:0回答:1

我有一种情况需要使用具有不正确产品 ID 的电子商务 dataLayer 数组(目前没有可用于调整它的开发人员)。名称值的最后一部分实际上提供了正确的产品 ID。对于容易拆分的单个项目,然后弹出并获取值的最后一部分并用于id。

我还不够流利,无法成功完成多元素数组,而且由于它是针对 Google 标签管理器的,因此不支持 ES6。请注意,在我下面的示例数组中,id 元素值与 name 值的最后一部分匹配,但带有额外的不需要的字符。

获取名称(或 id)元素值作为数组很容易:

function() {
  var products = {{ecommerce.checkout.products}};
  return products.map(function(prod) { return prod.name; });
}

返回我预期的名称值数组:

[ "Webasto Jumper Harness SmarTemp Control - 5012138A", "Valvoline Premium Blue One Solution Gen2 10W30 - C891017GA", "Cummins Solenoid Bracket 3937235" ]

我最近尝试使用该产品名称数组失败,拆分并弹出每个项目以获取更新的数组:

function() {
  var products = {{ecommerce.checkout.products}};
  var ogNames = products.map(function(prod) { return prod.name; });
  var newIDs = ogNames.forEach(function(item) { item.split(" ");
    var last = item.pop(); return last});
return newIDs;
} 

我希望得到的只是这个

 [   "5012138A",   "C891017GA",   "3937235" ]

这是我正在使用的 ecommerce.checkout.products 数组的示例:

[
  {
    name: "Webasto Jumper Harness SmarTemp Control - 5012138A",
    id: "5012138AWEBASTO",
    price: "38.49",
    brand: "Webasto",
    category: "Webasto Parts",
    variant: "",
    quantity: 1
  },
  {
    name: "Valvoline Premium Blue One Solution Gen2 10W30 - C891017GA",
    id: "C891017GAVALVOLINE",
    price: "17.5",
    brand: "Valvoline",
    category: "Valvoline Oil",
    variant: "",
    quantity: 1
  },
  {
    name: "Cummins Solenoid Bracket 3937235",
    id: "3937235CECO",
    price: "144.8",
    brand: "Cummins",
    category: "Cummins Genuine Parts",
    variant: "",
    quantity: 1
  }
]

*** 如果你能展示我如何从原始的 ecommerce.checkout.products 数组创建一个新数组,将所有 id 值替换为所有对应名称值的最后一部分,则在 (" ") 和 pop( ).

谢谢大家的观看!我感谢您的专业知识和您可以提供的任何见解。

javascript arrays split e-commerce google-tag-manager
1个回答
0
投票

如果你想要这样的东西:

那么应该是这样的:

var newArray = originalArray.map(function(obj){obj.id = obj.name.split(" ").slice(-1)[0];return obj;});

这都应该是 GTM 友好的。

我使用的是 slice 而不是 pop,因为 pop 正在发生变异,并且在没有需要的情况下不发生变异是一个很好的习惯。

请注意,这应该被视为一个临时解决方案,一个 hack。

© www.soinside.com 2019 - 2024. All rights reserved.