JavaScript:如何从变量中创建对象属性名称和值

JavaScript: How to create object property name and value from variables

本文关键字:属性 创建对象 变量 JavaScript      更新时间:2024-02-06

我正在开发选择收集应用程序,但我在处理对象时遇到了困难:用户有卡片列表,每张卡片都有选择列表,每个选择都有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());

要玩的代码:http://jsfiddle.net/F5pt6/

像以前一样将datacollection['material']初始化为对象。

此外,请正确参考值(如果它们在您以前的对象中):

datacollection[cardClassTwo] = {
   itemId: datacollection.color.itemId,
   price: datacollection.color.price
};