数组中的Javascript循环
我知道这将是一个简单的过程,我已经尝试将堆栈溢出中的不同拼图拼接在一起,但我的大脑有一部分不工作 我正在编写一个web collect JavaScript,它应该通过数据层解析我的购物车详细信息数组中的Javascript循环,javascript,Javascript,我知道这将是一个简单的过程,我已经尝试将堆栈溢出中的不同拼图拼接在一起,但我的大脑有一部分不工作 我正在编写一个web collect JavaScript,它应该通过数据层解析我的购物车详细信息 var cartcontent = [{ "item": tealiumStaticImpressions.cart.product_sku.toString().split(".", 2)[0] + '.' + tealiumStaticImpressions.cart.product_sku.to
var cartcontent = [{
"item": tealiumStaticImpressions.cart.product_sku.toString().split(".", 2)[0] + '.' + tealiumStaticImpressions.cart.product_sku.toString().split(".", 2)[1],
"quantity": parseInt(tealiumStaticImpressions.cart.product_quantity),
"price": parseFloat(tealiumStaticImpressions.cart.cart_product_price)
}];
我需要“项目”、“数量”和“价格”来应用于所有项目-它目前只拾取第一个项目
我发现这是部分匹配
for (var key in p.cart_product_sku) {
if (p.cart_product_sku.hasOwnProperty(key)) {
console.log("item" + " -> " + p.cart_product_sku[key]);
}
}
以下是预期结果
{item: 'item_1', price: 19.9, quantity: 1},
{item: 'item_2', price: 29.7, quantity: 3}
但我不确定这一切是如何协同工作的
编辑
这是教学统计新闻的内容
tealiumStaticImpressions.cart{
购物车产品标识:数组(2),
购物车产品价格:数组(2),
购物车产品数量:数组(2),
购物车产品sku:阵列(2),
购物车共有物品:“2”,
…
}
购物车产品标识:阵列(2)0:“J181LS81.NVY.10”
1:“J173SS202.MUS.3”
长度:2 _协议_:Array(0)购物车u产品u价格:Array(2)
0: "81.81"
1: "72.72"
长度:2\原型:数组(0)购物车\产品\数量:数组(2)
0: "1"
1: "1"
长度:2__原型:数组(0)购物车\u产品\u sku:数组(2)
0:“J181LS81.NVY.10”
1:“J173SS202.MUS.3”
长度:2 \uuuu协议\uuuuu:数组(0)购物车\u总计\u项目:“2”
购物车总价值:“169.98”
签出步骤:“1”
电子商务行动:“结帐”
页面类型:“购物车”
产品类别:(2)[“长袖衬衫”、“短袖衬衫”]产品名称:(2)[“多诺万格子衬衫”、“亨利亚麻格子衬衫”]产品价格:(2)[“89.99”、“79.99”]产品数量:(2)[“1”、“1”]产品尺寸:(2)[“LT”、“4XL”]产品库存单位:(2)[“J181LS81.NVY.10”、“J173SS202.MUS.3”]产品子类别:(2)[“衬衫”、“衬衫”]_uuuproto_uuu:Object
是的,我认为这和你想象的一样简单。我们的基本假设是
cart
中的any iterable属性(一个可以迭代的属性,如数组)对应于其他iterable属性的索引。也就是说,cart\u product\u id[0]
对应于cart\u product\u price[0]
和cart\u product\u quantity[0]
,等等cart
道具本身的名称。因此,采用以下道具:cart\u product\u id
,cart\u product\u price
,cart\u product\u quantity
,等等,我们的对象看起来像:
{
id: 0,
price: "$0.10",
quantity: 10
...
}
购物车中重新设置属性。第二个循环将为新的项目集合提供数据,每次一个项目
const cart = tealiumStaticImpressions.cart;
const totalItems = parseInt(cart.cart_total_items);
// Some of the properties in `cart` don't provide item information. We'll exclude them
const exclude = ['cart_total_items'];
let collection = [];
for (let i =0; i < totalItems; i++) {
let currentItem = {};
Object.keys(cart).forEach(key => { // Loop through only own properties in cart
if (exclude.some(ex => ex === key)) return; // Don't process keys in cart that are in the exclude list
let prop = key.split("_").pop(); // Get the word after the last "_"
currentItem[prop] = cart[key][i]; // Map the value of this property to our new collection item
});
// We populated our current item, now push into the collection
collection.push(currentItem);
}
const cart=tealiumStaticImpressions.cart;
const totalItems=parseInt(cart.cart\u total\u items);
//“购物车”中的某些属性不提供商品信息。我们将排除他们
const exclude=['cart_total_items'];
让集合=[];
for(设i=0;i{//只循环遍历cart中自己的属性
if(exclude.some(ex=>ex==key))return;//不处理购物车中排除列表中的密钥
让prop=key.split(“\u”).pop();//获取最后一个“\u”后面的单词
currentItem[prop]=cart[key][i];//将此属性的值映射到我们的新集合项
});
//我们填充了当前项目,现在将其推入集合
collection.push(当前项);
}
为什么不将TealiumStaticPressions的内容转储到DevTools中,然后发布到这里呢。了解结构是回答问题的必要条件。此外,考虑共享这些数据来自何处,并使用额外的标签来吸引与您正在使用的平台一起工作的用户。抱歉。那当然是个好主意。