2015-05-21 36 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。 –

相关问题