簡體   English   中英

在Javascript中為JSON對象賦值

[英]Assigning Values to JSON Objects in Javascript

這是我試圖通過JavaScript或點或[]表示法構建的:

var shoppingCart = { 
        'item1' : {
            'description' : 'This is item #1',
            'price' : 10,
            'quantity' : 1,
            'shipping' : 0,
            'total' : 10
        }
    };

現在,如果'item1'是變量名itemName

這有效:
var shoppingCart = {};
shoppingCart[itemName] = itemName;
alert(shoppingCart.item1);

返回item1

但這不起作用:
1 var shoppingCart = {};
2 shoppingCart[itemName]['description'] = 'This is Item #1';

JS剛剛在第2行去世,為什么? 以及如何將描述值分配給“描述”?

我會這樣做:

var shoppingCart = { 
        itemName : {
            'description' : description,
            'price' : price,
            'quantity' : quantity,
            'shipping' : shipping,
            'total' : total
        }
    };

...但它使密鑰字面意思是itemName而不是item1

shoppingCart[itemName]不存在。
您需要先創建它:

var shoppingCart = {};
shoppingCart[itemName] = { };
shoppingCart[itemName].description = 'This is Item #1';

或者,更好的是:

var shoppingCart = {};
shoppingCart[itemName] = { description: 'This is Item #1' };

在javascript對象中不會自動創建成員訪問; 你必須先創建對象:

var shoppingCart = {};
shoppingCart["item1"] = {}; // This creates the object
shoppingCart["item1"]["description"] = "This is item #1"; // add a member

注意,您當然也可以一次創建整個對象

shoppingCart[itemname] = { "description": description,
                           "price": price,
                           "quantity": quantity,
                           "shipping": shipping,
                           "total": total };

它不起作用,因為在第二個示例中,您嘗試使用尚未設置的鍵索引空白對象。 以下將有效......

var shoppingCart = {};
shoppingCart[itemName] = {};
shoppingCart[itemName]['description'] = '...';

因為nowCart [itemName]實際上是一個對象。

僅供參考,替代解決方案:

var itemName = {};
itemName.description = 'This is Item #1';
var shoppingCart = {};
shoppingCart.itemName = itemName;

要不就

var shoppingCart = {};
shoppingCart.itemName = { description: 'This is Item #1' };

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM