变量名称被添加而不是它的值,javascript

向JavaScript对象添加值时遇到问题:要添加的值是key,value对。 这是样本:

 //JavaScript object var cart=new Object(); function add() { var rating="1" var category="somecat"; var user="user1"; if(cart[user]==null) cart[user]={category:rating}; else cart[user][category]=rating; } 

我期待的是,如果user存在于购物车对象中,则应更换其特定值,如果user不存在,则应添加新用户和类别。

user已存在时,代码工作正常。 问题是,当我使用cart[user]={category:rating}添加新元素时,它将变量名称添加为键即类别,而不是其中的值(“somecat”)。

有没有办法使用json,jquery或javascript本身?

有没有办法在变量中赋值?

无法使用变量在对象文字表示法中定义属性名称。 它接受标识符或字符串,但都标识属性名称,而不是变量。

您必须创建对象,然后添加属性:

 if(!cart[user]) { cart[user] = {}; } cart[user][category] = rating; 

你需要更换

 {category:rating} 

 var obj = {}; obj[category] = rating; 

创建对象文字时,键必须是字符串,因此在您的代码中它将是“类别”。 如果你改为:

  var rating="1" var category="somecat"; var user="user1"; if( !cart[user] ) { cart[user]={}; } cart[user][category]=rating; 

这会将非现有用户初始化为空对象,然后添加类别。