【问题标题】:Variable name getting added instead of its value, javascript添加变量名称而不是其值,javascript
【发布时间】:2012-09-12 10:42:33
【问题描述】:

向 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} 添加一个新元素时,它会将变量名称添加为键,即 category ,而不是其中的值(“somecat”)。

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

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

【问题讨论】:

    标签: javascript jquery json


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢! :) 意味着它将所有内容都视为属性名称。 (文字)。很高兴知道。谢谢
    • 我还有一个问题。购物车[用户]={类别:评分};在这种情况下,评级的价值正在增加,即: "1" 。这是怎么回事?
    • 因为这是一个值,而不是属性名。
    【解决方案2】:

    你需要更换

    {category:rating}
    

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-05-16
        • 2014-04-28
        • 2013-09-11
        • 1970-01-01
        • 1970-01-01
        • 2015-03-11
        • 1970-01-01
        • 2013-07-27
        相关资源
        最近更新 更多