向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本身做到这一点?
有没有办法在变量中分配值?
答案 0 :(得分:5)
无法使用变量在对象文字表示法中定义属性名称。它接受标识符或字符串,但都标识属性名称,而不是变量。
您必须创建对象,然后添加属性:
if(!cart[user]) {
cart[user] = {};
}
cart[user][category] = rating;
答案 1 :(得分:3)
您需要更换
{category:rating}
与
var obj = {};
obj[category] = rating;
答案 2 :(得分:0)
创建对象文字时,键必须是字符串,因此在您的代码中它将是“类别”。相反,如果你这样做:
var rating="1"
var category="somecat";
var user="user1";
if( !cart[user] ) {
cart[user]={};
}
cart[user][category]=rating;
这会将非现有用户初始化为空对象,然后添加类别。