1

向 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 本身来做到这一点?

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

4

3 回答 3

6

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

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

if(!cart[user]) { 
   cart[user] = {};
}
cart[user][category] = rating;
于 2012-09-12T10:44:44.797 回答
3

您将需要更换

{category:rating}

var obj = {};
obj[category] = rating;
于 2012-09-12T13:55:08.750 回答
0

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

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

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

   cart[user][category]=rating;

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

于 2012-09-12T14:01:49.793 回答