2013-12-18 187 views
1

是否有可能在Javascript中訪問同樣的命名屬性?訪問Javascript屬性

例如:

var myObject = { 
"key1": "value1 ", 
"myProp" : "after key1", 
"key2": "value2 ", 
"myProp" : "after key2", 
} 

var result = ''; 
for (var prop in myObject) { 
    result += "myObject." + prop + " = " + myObject[prop] + "\n"; 
    } 
alert(result); 

該示例僅返回第二屬性 'myProp'。我需要兩個屬性,並且必須找出它們是否在key1或key2之後。問題是,只有一個給定的name屬性,所以myProp屬性的第二個定義擦除一個先例:

您可以在http://jsfiddle.net/nxJLh/

回答

3

你的問題不是在訪問嘗試。

你可以做的是在你的屬性存儲陣列:

var myObject = { 
    "key1": "value1 ", 
    "key2": "value2", 
    "myProp" : ["after key1", "after key2"], 
} 

你也可以尋找替代的結構:

var myObjects = [ 
    {key: "key1", value:"value1", myProp: "for key1"}, 
    {key: "key2", value:"value2", myProp: "for key2"} 
] 

但你是唯一一個能夠選擇適當的設計在這裏你的應用程序。

+0

Thx爲答案。我很害怕這個。我知道替代結構。但是我的對象將由lib提供的json-String創建,我不想改變它。也許我會在將它解析爲json之前,用字符串做一些正則表達式魔術。 – Andreas

+0

@Andreas這也是一個解決方案。但請注意,根據[RFC](http://www.ietf.org/rfc/rfc4627.txt),您的文本不是真正的JSON(「對象內的名稱應該是唯一的」)。 –