您有3个要素可供使用;
一个在篮子中带有产品的数组(带有相应的数量,价格,“ product_category”和“ product_parent_category”)
具有类别和称重因子的表(与第3步相同的脚本中)
一个javascript函数,用于输出每种产品的商品数量价格权重因子的总和。
->价格和数量都很容易,但是对于权衡因素,我们有一个层次结构:
下面,我给出到目前为止我想出的transactionProducts和javascript;
'transactionProducts': [{
'sku': 'DD44',
'name': 'T-Shirt',
'product_category': 'Apparel1',
'price': 10,
'quantity': 2
},{
'sku': 'AA1243544',
'name': 'Socks',
'product_category': 'Apparel2',
'product_parent_category': 'Apparel2',
'price': 11,
'quantity': 3
},{
'sku': 'AA1243544',
'name': 'Socks',
'product_category': 'Apparel3',
'product_parent_category': 'Apparel3',
'price': 12,
'quantity': 4
},{
'sku': 'AA1243544',
'name': 'Socks',
'product_category': 'TESTTESTwrongcategory',
'product_parent_category': 'Apparel4',
'price': 2,
'quantity': 1
}];
</script>
这是我到目前为止所得到的。一切正常,除了if语句
function(){
var lookupTable = {
'Apparel1': function() {
return 0.5;
},
'Apparel2': function() {
return 0.4;
},
'Apparel3': function() {
return 0.25;
},
'Apparel4': function() {
return 2;
}};
var sum = 0;
for (var i = 0; i < {{VAR - transactionProducts}}.length; i++){
var weging = {{VAR - transactionProducts}}[i]['product_category'];
if (typeof weging !== 'string') {
weging = {{VAR - transactionProducts}}[i]['product_category'];
} else if(typeof weging === 'string') {
weging = {{VAR - transactionProducts}}[i]['product_parent_category'];
} else {
weging = 0.44
};
sum += {{VAR - transactionProducts}}[i]['quantity']*{{VAR - transactionProducts}}[i]['price']*
lookupTable[weging]()
};
return sum;
}
如果我忽略了该语句,则我有一个有效的脚本,但仅适用于“ product_category”部分,但该值可能为空,因此我们必须使用以下规则集:
总是首先尝试匹配“ product_category”
如果product_category没有产生数字:请尝试在product_parent_category上匹配
解决方案
The script loops a total of 4 times:
product1: 2*10*0.5=weigfactor for Apparel1 on "product_category" level
product2: 3*11*0.4=weigfactor for Apparel2 on "product_category" level
product3: 4*12*0.25=weigfactor for Apparel3 on "product_category" level
product4: 1*2*2=weigfactor for Apparel4 on "product_parent_category" level
The sum of these all=39.2. I still get 'undefined' as solution
如果有人可以指出正确的方向来解决这个问题,那将非常棒!