Javascript:是否可以通过名称从数组中调用对象?

时间:2015-05-21 08:52:48

标签: javascript arrays object

我创建了一个像这样的数组

contacts = [bob,ryan,468]

假设bob和ryan是具有多个属性的对象。我知道我可以根据其位置调用数组,比如contacts[1]contacts[0]

是否可以通过名称调用bob对象?有什么默认方法可以在javascript中执行此操作,还是应该编写自己的解决方案?

PS:我对Javascript完全不熟悉。

5 个答案:

答案 0 :(得分:1)

能够做到这一点:

null
必须在该行之前的某处定义

contacts = [bob,ryan,468] bob。 像这样:

ryan

您也可以使用var bob = { name: 'Bob', age: 42 }; var ryan = { name: 'Ryan' }; var contacts = [bob,ryan,468]; contacts[0]来访问它们,而不是使用contacts[1]bob

您要求'按名称调用bob对象'。 JavaScript中的对象没有名称。您可以拥有一个包含对象(或至少是对它的引用)的变量,例如ryan。或者你的名字是什么意思?

希望这会有所帮助:)

答案 1 :(得分:1)

示例:

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

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

答案 2 :(得分:0)

你可能想要的是哈希...



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

alert(contacts['last']);




答案 3 :(得分: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.

答案 4 :(得分: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);

希望有所帮助