2014-10-27 71 views
1

我已經看到了如何在Python可以有一個名爲元組來存儲和retreive與一個鍵值相關的值,比如:JavaScript和子對象的對象 - 如何使用它正確

REQUIRED_FIELDS = { 
    0: RequiredFields(LocalityDisplay=True, LocalityRequired=False, RegionDisplay=True, RegionRequired=False, PostcodeDisplay=True, PostcodeRequired=False), 
    1: RequiredFields(LocalityDisplay=False, LocalityRequired=False, RegionDisplay=True, RegionRequired=True, PostcodeDisplay=True, PostcodeRequired=True), 
    2: RequiredFields(LocalityDisplay=True, LocalityRequired=True, RegionDisplay=False, RegionRequired=False, PostcodeDisplay=True, PostcodeRequired=True), 
    3: RequiredFields(LocalityDisplay=True, LocalityRequired=True, RegionDisplay=False, RegionRequired=False, PostcodeDisplay=True, PostcodeRequired=True), 
    .......... 
} 

我想在JavaScript中複製上述代碼。在搜索中,我發現了一個模糊的,並不是非常有用的JavaScript「嵌套字典」引用,但我找不到任何示例。我試圖尋找其他變體,但空白。這種方法會被稱爲「嵌套字典」還是以其他名稱出現?

我希望有人也許能夠揭示主題的一些光,看看我是如何懷疑此javascript嵌套的字典語法可以設置了一個例子。

var addressNestedDictionary = { 
    0: {"LocalityDisplay": 'True', "LocalityRequired": "False", "RegionDisplay": "True", "RegionRequired": "False", "PostcodeDisplay": "True", "PostcodeRequired": "False"}, 
    1: {"LocalityDisplay": "False", "LocalityRequired": "False", "RegionDisplay": "True", "RegionRequired": "True", "PostcodeDisplay": "True", "PostcodeRequired": "True"}, 
    2: {"LocalityDisplay": "True", "LocalityRequired": "True", "RegionDisplay": "False", "RegionRequired": "False", "PostcodeDisplay": "True", "PostcodeRequired": "True"}, 
    3: {"LocalityDisplay": "True", "LocalityRequired": "True", "RegionDisplay": "False", "RegionRequired": "False", "PostcodeDisplay": "True", "PostcodeRequired": "True"}, 
    ........ 
}; 

如果上述方法是正確的,我將如何調用嵌套字典?

+2

'addressNestedDictionary [0] .LocalityDisplay'或'addressNestedDictionary [0] [「LocalityDisplay」]' – Amadan 2014-10-27 04:49:55

回答

1

JavaScript有對象,而不是字典。您可以通過兩種方式實例化對象:

var myObj = {}; 
var myObj = new Object(); 

對象允許您訪問其命名屬性。您可以創建過程中設置屬性:

var myObj = { 
    0 : "fun", 
    test : [1, 2, 3], 
    "delete" : "you need to surround keywords, like delete, in quotes", 
    "if" : "otherwise, the quotes are optional" 
} 

或更高版本:

myObj.anArray = []; 

對象屬性甚至可以是另一個對象!

myObj.subObject = {}; 

您可以通過兩種方式訪問​​這些屬性:

myObj["subObject"] // equal to {} 
myObj.subObject  // equal to {} 

在你的情況,你會進入一個子對象有:

addressNestedDictionary[0] 
/* returns 
    { 
    "LocalityDisplay": 'True', 
    "LocalityRequired": "False", 
    "RegionDisplay": "True", 
    "RegionRequired": "False", 
    "PostcodeDisplay": "True", "PostcodeRequired": "False" 
    } 
*/ 

注意如何我用addressNestedDictionary[0]。這是因爲addressNestedDictionary.0將是一個語法錯誤 - 它將被錯誤地解析。不過,這兩種符號,括號和圓點都是完全一樣的東西。

+0

Royhowie,謝謝我有對象和子對象的工作。 但是,如何將該值合併到if語句中?例如: if(addressNestedDictionary [$('#id_address_country_style_type').val()]。LocalityDisplay) { // do something something true。 } else { //做一些虛假的事情。 } – user1261774 2014-10-27 06:02:23

+0

@ user1261774應該工作,雖然你可能要檢查的對象的存在,首先通過'nestedAddress [someVal] && nestedAddress [someVal] .LocalityDisplay' – royhowie 2014-10-27 14:07:32

+0

由於這是一個範圍問題(DOH!) – user1261774 2014-10-29 02:15:03