Estoy tratando de convertir la variable de capa de datos que está en formato de matriz en otra variable que debería tener valores separados por comas.
Tengo un formato de matriz como este: -
var data= [ { name: "productname", id: "1356", price: "0.00", category: "Health", position: "1", list: "New Products", stocklevel: "20", brand: "Health" }, { name: "productname2", id: "5263", price: "0", category: "Hair", position: "2", list: "New Products", stocklevel: "", brand: "Hair" },]Que es lo que estoy tratando de convertir en valores separados por comas como a continuación.
Product1: "productname", Product1Price: 0.00, Product1id: "1356", Product1brand: "health", Product1stocklevel: "20", Product2: "productname2", Product2price: 0, Product2id: "5263", Product2brand: "hair", Product2stocklevel: "",Esto es lo que probé con la función javascript: -
data.map((e, i) => { return Object.keys(e).map(p => `Product${i+1}${p=="name"?"":p}:"${e[p]}"`).join(",\n")}).join(",\n")Con esta función, puedo obtener fácilmente lo que quiero.
Pero de alguna manera cada vez que traté de poner esta función en la variable gtm (que es una variable javascript personalizada)
Entonces me enfrento a un problema en la misma variable que se muestra a continuación: -
Error at line 7, character 14: This language feature is only supported for ECMASCRIPT_2015 mode or better: template literal.El código real en la variable javascript personalizada está aquí.
function(){ data = {{Custom.orderData.items}}; var dataByComa = '' var Values = data.map(function (p, i) { return Object.keys (data[i]).map (function (k) { return Product ${p.position} ${k}: ${JSON.stringify(data[i][k])}`;});}).map(function (v) { return v.join(",\n"); }); var commaValues = Values.join(",\n"); return commaValues; } //Custom.orderData.items is datalayer variable which contains data in array format.Entonces, la pregunta es por qué esta función anterior no funciona en gtm y da algún error. Su ayuda será apreciada. Gracias :)
prueba este bucle simple
const data= [ { name: "productname", id: "1356", price: "0.00", category: "Health", position: "1", list: "New Products", stocklevel: "20", brand: "Health" }, { name: "productname2", id: "5263", price: "0", category: "Hair", position: "2", list: "New Products", stocklevel: "", brand: "Hair" }] let dataByComa = ''; data.forEach((d, i)=> { Object.keys(d).forEach((key)=> { dataByComa += `product${i+1}_${key}=${d[key]}, \n` }); }) console.log(dataByComa)El error se debe únicamente a que las funciones de flecha solo se pueden usar con ECMAScript 15 en adelante. No tiene relación con Google Tag Manager .
var data = [ { name: "productname", id: "1356", price: "0.00", category: "Health", position: "1", list: "New Products", stocklevel: "20", brand: "Health", }, { name: "productname2", id: "5263", price: "0", category: "Hair", position: "2", list: "New Products", stocklevel: "", brand: "Hair", }, ]; const commaValues = data .map(function (p, i) { return Object.keys(data[i]).map(function (k) { return "Product" + p.position + k + ": " + JSON.stringify(data[i][k]); }); }) .map(function (v) { return v.join(",\n"); }); console.log(commaValues.join(",\n"));