2014-03-02 37 views
0

訪問對象數組我有這樣的代碼:使用字符串

var dictionary=[ 
      apple={name:"apple",pos:"noun",d:"",c:["fruit"]}, 
      banana={name:"banana",pos:"noun",d:"",c:["fruit"]} 
    ]; 

我怎麼能訪問數組中的對象之一,通過使用它的名字的字符串。在你可以訪問一個對象的方式爲

 object['propertyName'] 

有沒有辦法做一些類似的數組?我想訪問它的方式像

dictionary["apple"].pos 
    //Want to return "noun" 

有一個簡單的辦法做這樣的事情有一個數組,如果沒有在那裏,我可以使用另一種方法?

+0

你數組的語法是不正確的。檢查你的代碼在這裏http://www.jshint.com/ – elclanrs

+0

什麼部分是不正確的?我沒有看到任何錯誤。 – zchbrntmr

+0

好吧,我把代碼放在JSHint中,它說「兩個未定義的變量,」蘋果「和」香蕉「,而不是你想要的。 – elclanrs

回答

3

您生成dictionary錯誤的方式;它在語法上是有效的,但幾乎肯定是而不是你打算做什麼。它沒有將關鍵字apple綁定到該對象。相反,它定義了一個名爲apple的隱式(全局)變量,並將該對象以及該數組的第一個元素分配給該變量。

試試這個:

var dictionary= { 
    apple: {name:"apple",pos:"noun",d:"",c:["fruit"]}, 
    banana: {name:"banana",pos:"noun",d:"",c:["fruit"]} 
}; 

console.log(dictionary["apple"].pos); // "noun" 

// This also works: 
console.log(dictionary.apple.pos); // "noun" 
+1

你可能還想在帖子中注意到他不需要多餘的「name」屬性,他也可以使用點語法而不是字典樣式'dictionary.apple.pos'(如果他這樣選擇的話)。 – Timeout

+0

@Jay好點。 OP對於JS來說似乎有點新,所以他/她可能不熟悉這種語法。 –

+0

我使用該字符串的原因是因爲我在單擊提交按鈕時通過用戶輸入框獲取屬性,所以點語法在我所需的上下文中不會真正起作用。 – zchbrntmr