Javascript 返回不带引号的数组
场景 我想把产品GTIN推到谷歌商务中心 我得到的Javascript 返回不带引号的数组,javascript,google-tag-manager,Javascript,Google Tag Manager,场景 我想把产品GTIN推到谷歌商务中心 我得到的 "products": ['{"gtin":"5704378978422"}', '{"gtin":"5704378978057"}'] 我想要的 以下格式中的每个数组成员不带单引号: "products": [{"gtin":"GTIN1"}, {"gtin":"GTIN2"}] 如步骤3所述: 我的谷歌标签管理器设置 我已经从ecommerce.purchase.products创建了一个数据层变量{{DLV-ecommerce.pur
"products": ['{"gtin":"5704378978422"}', '{"gtin":"5704378978057"}']
我想要的
以下格式中的每个数组成员不带单引号:
"products": [{"gtin":"GTIN1"}, {"gtin":"GTIN2"}]
如步骤3所述:
我的谷歌标签管理器设置
function() {
var products = {{DLV - ecommerce.purchase.products}};
return products.reduce(function(arr, prod) {
return arr.concat("{" + '"' + "gtin" + '"' + ":" + '"' + prod.gtin + '"' + "}" ); }, []);
}
最好的方法是什么
我是JavaScript新手,如果您使用
concat
函数创建字符串连接,而不是对象,我将非常感谢您的评论和建议。
您可能应该使用而不是reduce
。像这样:
function() {
var products = {{DLV - ecommerce.purchase.products}};
return products.map(function(prod) {
return {"gtin": prod.gtin};
});
}
你是说你想要这个
const-product=['{“gtin”:“570437897822”}','{“gtin”:“57043789788057”}']
const newProduct=product.map(行=>JSON.parse(行))
console.log(newProduct)
这解决了这个问题,但目前它与Google Tag Manager不兼容,根据OP,Google Tag Manager应该使用。“此语言功能仅支持ECMAScript 6模式或更好的模式:const声明。”和“[…]:arrow函数。”我不确定在当前代码的上下文中放在哪里。你能解释一下吗?@nteglskov试图替换你的退货。减少line@kkangilGoogle Manager给了我上面描述的错误KRG,不允许我将containerchangeconst
发布到var
,并使用function(row){return JSON.parse(row);}更改row=>JSON.parse(row)
这为我在GTM预览模式下的变量提供了以下信息:[{gtin:'57043789788422'},{gtin:'57043789788057'}]如何将其转换为:[{“gtin:'570437897822'},{“gtin:'57043789788057'}]在Google Chrome中我得到:产品:[对象对象],[对象对象]”(还有一个控制台错误,但它是Google API)@恩特格尔斯科夫这不是你所期望的吗?它们都表示完全相同的JS数据,我希望它与此完全相同(包括引号):[{“gtin”:“570437897822”},{“gtin”:“57043789788057”}]围绕“gtin”的引号只是对象向您显示的方式。它们与实际对象数据无关。如果服务API接受带引号的对象,它也会接受不带引号的对象。如果需要向服务发送JSON字符串而不是对象(我对此表示怀疑),可以JSON.stringify
it-它将返回对象的序列化字符串(包括引号)