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

Nik*_*war 0 javascript jquery json

向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;
 }
Run Code Online (Sandbox Code Playgroud)

我期待的是,如果user存在于cart对象中,那么他的特定值应该被替换,如果user不存在则应该添加新用户和类别.

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

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

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

Que*_*tin 5

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

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

if(!cart[user]) { 
   cart[user] = {};
}
cart[user][category] = rating;
Run Code Online (Sandbox Code Playgroud)