添加变量名而不是其值,javascript

添加变量名而不是其值,javascript,javascript,jquery,json,Javascript,Jquery,Json,我在向JavaScript对象添加值时遇到了一个问题:要添加的值是一对键、值。以下是示例: //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

我在向JavaScript对象添加值时遇到了一个问题:要添加的值是一对
键、值。以下是示例:

//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
不存在,则应添加新的用户和类别

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

有没有办法使用json、jquery或javascript本身来做到这一点


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

没有办法使用变量在对象文字符号内定义属性名称。它接受标识符或字符串,但两者都标识属性名,而不是变量

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

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

您将需要更换

{category:rating}


创建对象文字时,键必须是字符串,因此在代码中它将是“category”。如果您这样做:

  var rating="1"
  var category="somecat";
  var user="user1";

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

   cart[user][category]=rating;

将不存在的用户初始化为空对象,然后添加类别。

谢谢!:)意味着它将所有内容都视为属性名称。(文字)。很高兴知道。谢谢,我还有一个问题。购物车[用户]={类别:评级};在这种情况下,评级的价值会增加,即:“1”。这是怎么回事?因为这是一个值,而不是属性名。
  var rating="1"
  var category="somecat";
  var user="user1";

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

   cart[user][category]=rating;