我正在收集应用程序的选择,我陷入了处理对象的困境: 用户有卡片列表,每张卡片都有选择列表,每个卡片都有id和价格。我想收集每张卡的用户选择,而不是计算最终价格。我不知道卡的确切名称,它们将被生成。我只知道所选卡片或卡片列表的类别。
数据收集:
var datacollection = {
shape: {
itemId: 1,
price: 10
},
countmoney: function () {
var cash = 0;
$.each(this, function (id, item) {
if (typeof (item) != 'function') {
cash += item.price;
}
});
return cash + ' $';
}
};
从.click收集的数据(function(){
var cardClass = 'color';
var choiceId = 2;
var choicePrice = 50;
我可以插入新数据,但只有我知道卡的名称
datacollection.color = {
itemId: choiceId,
price: choicePrice
};
但是,如果我不知道卡的可能名称怎么办?使用括号表示法应该是可行的方法..但它不起作用。
cardClassTwo = 'material';
datacollection[cardClassTwo]['itemId'] = choiceId;
datacollection[cardClassTwo]['price'] = choicePrice;
// Uncaught TypeError: Cannot set property 'itemId' of undefined
console.log(datacollection.countmoney());
答案 0 :(得分:1)
将您的datacollection['material']
初始化为对象,就像之前一样。
另外,正确引用值(如果它们在您之前的对象中):
datacollection[cardClassTwo] = {
itemId: datacollection.color.itemId,
price: datacollection.color.price
};