2013-06-30 88 views
1

我有一個像下面這樣的對象我想通過基於「96f54547-767c-434b-bcb4-a239a36b1c56」的搜索/查找元素並獲取數組[[x],「y」]。如何實現這一目標?從JavaScript對象獲取元素

<script type="text/javascript"> 
var cList = { 
    "96f54547-767c-434b-bcb4-a239a36b1c56": ["x","y"], 
    "fd3f9224-9fa5-49f5-9eea-ffd0ff40fdb0": [null,"y"], 
    "843ed981-979f-4639-be6d-93665e52246f": [null,"y"], 
    "2208ca60-c0d1-4ee9-aaae-291bef9622fa": [null,"y"] 
};  
</script> 

回答

6

您可以使用bracket operators找到Array

var values = cList["96f54547-767c-434b-bcb4-a239a36b1c56"]; 

無論是硬編碼爲高於或與存儲在另一個變量的關鍵:

var guid = "96f54547-767c-434b-bcb4-a239a36b1c56"; 
var values = cList[guid]; 

另外,如果你想爲了測試Object是否有鑰匙,可以使用in keyword

if (!(guid in cList)) { 
    throw new Error('Data does not include the expected GUID: ' + guid); 
} 
+0

我很驚訝人們不跳了你的喉嚨關於使用'in',而不是'hasOwnProperty()' – Ian

+0

@Ian這是一個很好的建議,但我不要以爲一方是絕對的。有一些用例可以確認原型鏈是期望的效果。此外,在這種情況下,不應該太擔心與普通的「對象」的區別。對擴展Object.prototype有更多的反對意見。 :) –

+0

我的觀點只是當我不知道的時候會受到嘲笑,我認爲這很愚蠢。太多人認爲檢查對象文字屬性的唯一「安全」方法是使用'hasOwnProperty' ...因爲Crockford,Resig,等等等等等等。只是看到其他人沒事就不用它:) – Ian

1

你可以嘗試這樣的

var value= cList["96f54547-767c-434b-bcb4-a239a36b1c56"] 
+0

在推薦它之前,你是否嘗試過第一個選項? (堆棧溢出的基於顏色的語法突出顯示應該給你提示,爲什麼它不會工作......) – nnnnnn

+0

未嘗試使用此代碼,但我已經在我的代碼中實現了它前段時間 –

+0

嗯它不工作由於字符串的格式 –