2012-09-12 67 views
0

向JavaScript對象添加值時遇到問題:要添加的值是key,value對。下面是示例:添加變量名稱而不是其值,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不存在,應該添加新的用戶和類別。

代碼工作正常,當user已經存在。問題是,當我使用cart[user]={category:rating}添加新元素時,它將變量名稱添加爲鍵,即類別,而不是其內部的值(「somecat」)。

有沒有辦法使用json,jquery或javascript本身來做到這一點?

有什麼辦法在變量內部賦值嗎?

回答

5

沒有辦法使用變量來定義對象文字符號內的屬性名稱。它接受標識符或字符串,但都標識屬性名稱,而不是變量。

你必須創建對象,然後添加屬性:

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

謝謝! :)意味着它將所有內容視爲屬性名稱。 (文字)。很高興知道。謝謝 –

+0

我有另一個查詢。購物[用戶] = {類別:等級};在這種情況下,額定值正在增加,即:「1」。這怎麼樣? –

+0

因爲這是一個值,而不是屬性名稱。 – Quentin

3

您將需要更換

{category:rating} 

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

當創建對象文本的密鑰必須是一個字符串,所以在你的代碼中它將是「類別」。如果你這樣做:

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

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

    cart[user][category]=rating; 

這將初始化一個不存在的用戶到一個空的對象,然後添加該類別。

相關問題