2015-05-21 35 views
0

我已創建這樣Javascript:是否可以通過名稱從數組中調用一個對象?

contacts = [bob,ryan,468] 

陣列假設鮑勃和Ryan是具有多於一個屬性的對象。我知道我可以通過它的位置調用一個數組,例如contacts[1]contacts[0]

是否可以通過名稱調用bob對象?有沒有任何默認的方法來做到這一點在JavaScript或我應該寫我自己的解決方案?

PS:我完全不熟悉Javascript。

+1

您仍然可以訪問'bob'只要它的範圍。 – Scimonster

+1

與陣列 - **否**。使用對象而不是陣列 – hindmost

+0

@Anonymous Platypus你是什麼意思的對象的名稱?它存儲的變量是什麼?請澄清。 –

回答

1

能夠很好做到這一點:

contacts = [bob,ryan,468] 

bobryan必須在該行之前的某處定義。 事情是這樣的:

var bob = { 
     name: 'Bob', 
     age: 42 
    }; 

var ryan = { name: 'Ryan' }; 

var contacts = [bob,ryan,468]; 

而不是使用contacts[0]contacts[1]你也可以只使用bobryan訪問它們。

您要求'按名稱呼叫bob對象'。 JavaScript中的對象沒有名稱。你可以有一個包含對象的變量(或者至少是對它的引用),如var bob = {};。或者你的名字是什麼意思?

希望這有助於:)

+0

我想從數組中調用它們,當我嘗試'console時。日誌(聯繫人[bob])'它返回'undefined'。我的意思是由變量名稱。 –

+1

JS中沒有關聯數組,因此您只能使用contacts [0],contacts [1]等。你可以使用普通對象,看看這個鏈接:http://www.less-broken.com/blog/2010/12/lightweight-javascript-dictionaries.html –

+0

我希望這個評論解決了我的疑問:)我我接受了這個答案。謝謝 –

0

你可能想在這裏是一個哈希...

var contacts = { 
 
    first: 'bob', 
 
    last: 'ryan', 
 
    number: 468 
 
}; 
 

 
alert(contacts['last']);

+0

我想你叫一個物體的屬性。我正在尋找從一個數組中用變量名稱調用一個對象。我不確定我是否出錯 –

1

例子:

var as = { "bob": bob, "ryan":ryan, "468":468 }; 

//as["bob"] -> bob object 
+0

這實際上是一個對象,而不是一個關聯數組。 JS中沒有這樣的東西。然而,這可能仍然是@Anonymous Platypus所要求的。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array –

+0

謝謝,我刪除它不會讓人困惑! – appersiano

0

您可以使用過濾器函數從數組原型到查詢你的數組。

var vals = [ 
    { 
     "name":"bob", 
     "age":50 
    }, 
    { 
     "name":"brayan", 
     "age":51 
    }, 
    567 
]; 

var query = vals.filter(function(obj){ 
    if (typeof(obj) === 'object' && 'name' in obj &&  typeof(obj.name) === 'string') { 
     if(obj.name === 'bob') 
      return true; 
    } 
    return false; 
}); 

alert(query[0].age); 

您可以使用適當的條件修改您的查詢操作。

這裏是一個working fiddle.

0

在JavaScript對象,我們一般保持值重點:值對。

您可以使用諸如:

var contacts = {"obj_ryan":{"fname":"ryan","lname":"bob","phone":468}, 
       "obj_mark":{"fname":"mark","lname":"filip","phone":467} 
       }; 

//use them like 
alert(contacts.obj_ryan.fname); 
alert(contacts.obj_mark.phone); 

希望它可以幫助

+0

這只是一個客體禮儀?不是數組。糾正我,如果我錯了 –

+1

是的,這是一個對象。在JS中數組只是一種對象。他們都使用Key:Value對的概念。不同的是,在對象中,我們明確指定了鍵和值(如var x = {「fname」:「mark」}),但是在數組JS中自動索引鍵的數字以0開頭(如var x = [「mark 「])。我們會像x.fname ||一樣訪問它們x [「fname」]和x [0] resp。 –

相關問題