问题:使用下面概述的JSON OBJECT,我需要完成(填写)代码段示例,使其看起来像第二个代码块。我不知道如何循环JSON OBJECT来构建被推入_etmc对象的内容。如果我遗漏任何可能有助于解决我的问题,请告诉我。
代码段示例:
_etmc.push(["trackCart", { “cart”: [
{"item" : "INSERT_ITEM", "quantity": "INSERT_QUANTITY" , "price" : "INSERT_PRICE" ,
"unique_id" : "INSERT_UNIQUE_ID" }
]}]);
以下是上述代码的最终结果:
_etmc.push(["trackCart", { “cart”: [
{"item" : "digitalData.cart.item[0].productInfo.productName", "quantity": "digitalData.cart.item[0].quantity" , "price" : "digitalData.cart.item[0].price" ,
"unique_id" : "digitalData.cart.item[0].productInfo.sku" } ,
{"item" : "digitalData.cart.item[1].productInfo.productName", "quantity": "digitalData.cart.item[1].quantity" , "price" : "digitalData.cart.item[1].price" ,
"unique_id" : "digitalData.cart.item[1].productInfo.sku" }
{"item" : "digitalData.cart.item[2].productInfo.productName", "quantity": "digitalData.cart.item[2].quantity" , "price" : "digitalData.cart.item[2].price" ,
"unique_id" : "digitalData.cart.item[2].productInfo.sku" }
{"item" : "digitalData.cart.item[3].productInfo.productName", "quantity": "digitalData.cart.item[3].quantity" , "price" : "digitalData.cart.item[3].price" ,
"unique_id" : "digitalData.cart.item[3].productInfo.sku" }
{"item" : "digitalData.cart.item[4].productInfo.productName", "quantity": "digitalData.cart.item[4].quantity" , "price" : "digitalData.cart.item[4].price" ,
"unique_id" : "digitalData.cart.item[4].productInfo.sku" }
]}]);
这是我的JavaScript对象:
var digitalData = [
"cart":{
"item":[
{
“productInfo":{"productID":"p1234”,”productName":"Bamboo Towel”,”sku":"320020454"},
"category":{"primaryCategory":""},
"quantity":"3",
"price":"10.0",
"discount":[]
},
{
"productInfo":{"productID":"p2345”,”productName”:”Arm Chair“,”sku":"810047424"},
"category":{"primaryCategory":""},
"quantity":"1",
"price":"10.0",
"discount":[]
},
{
"productInfo":{"productID":"p3456”,”productName”:”Bathroom Rug“,”sku":"330016238"},
"category":{"primaryCategory":""},
"quantity":"1",
"price":"6.0",
"discount":[]
},
{
"productInfo":{"productID":"p4567”,”productName”:”Bedroom Full Set”,”sku":"810038458"},
"category":{"primaryCategory":""},
"quantity":"1",
"price":"7.0",
"discount":[]
},
{
"productInfo":{"productID":"p5678”,”productName”:”Outdoor Table”,”sku":"330016874"},
"category":{"primaryCategory":""},
"quantity":"1",
"price":"39.99",
"discount":[]
}
]
}
]
这是我尝试使用digitalData对象中的信息填充_emtc之一:
_etmc.push(["trackCart", { “cart”: [
for ( var i = 0; i < digitalData.cart.item.length; i++) {
var obj = digitalData.cart.item[i];
console.log(obj);
for ( var key in obj) {
{"item" : "_satellite.getVar(obj + .productInfo.productName)", "quantity": "_satellite.getVar(obj + .quantity)" , "price" : "_satellite.getVar(obj + .price)" , "unique_id" : "_satellite.getVar(obj + .productInfo.sku)" },
}
]}]);
}
答案 0 :(得分:0)
您可以使用Array原型的map方法迭代JSON响应中的item属性。这将为您提供一个只包含您的物品的新阵列。
var items = jsonResponse.cart.items.map(function(item) {
return item;
})
有关MDN的参考,请参阅Array.prototype.map()。
答案 1 :(得分:0)
您不能在对象或数组文字中放置for
循环。循环应在其正文中执行push()
。
如果要将属性的值与字符串连接起来,则需要先结束字符串。
for (var i = 0; i < digitalData.cart.item.length; i++) {
var obj = digitalData.cart.item[i];
_etmc.trackCart.cart.push({
item: "_satellite.getVar('" + obj.productInfo.productName + "')",
quantity: "_satellite.getVar('" + obj.quantity + "')",
price: "_satellite.getVar('" + obj.price + ")",
unique_id: "_satellite.getVar('" + obj.productInfo.sku + "')"
});
}
我不确定我是否理解你正在使用_satellite.getVar
做什么,我怀疑它根本不需要,实际代码应该只是将属性的值放在结果对象中。
for (var i = 0; i < digitalData.cart.item.length; i++) {
var obj = digitalData.cart.item[i];
_etmc.trackCart.cart.push({
item: obj.productInfo.productName,
quantity: obj.quantity,
price: obj.price,
unique_id: obj.productInfo.sku
});
}