【问题标题】:Javascript: Is it possible to call an object from array by its name?Javascript:是否可以通过名称从数组中调用对象?
【发布时间】:2015-05-21 08:52:47
【问题描述】:

我已经创建了一个这样的数组

contacts = [bob,ryan,468]

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

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

PS:我对 Javascript 完全陌生。

【问题讨论】:

  • 您仍然可以访问bob,只要它在范围内。
  • 带数组 - 。使用对象而不是数组
  • @Anonymous Platypus 对象的名称是什么意思?它存储的变量?请澄清。
  • @tim-we 我的意思是保存对象的变量。在问题中说bob。我不知道我是否对此有误解,因为我是 JS 新手。 :(

标签: javascript arrays object


【解决方案1】:

能够做到这一点:

contacts = [bob,ryan,468]

bobryan 必须在该行之前的某个位置定义。 像这样的:

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

var ryan = { name: 'Ryan' };

var contacts = [bob,ryan,468];

您也可以只使用bobryan 来访问它们,而不是使用contacts[0]contacts[1]

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

希望这会有所帮助:)

【讨论】:

  • 我想从数组中调用它们。当我尝试console.log(contacts[bob]) 时,它返回undefined。我的意思是变量名。
  • JS中没有关联数组,所以只能使用contacts[0]、contacts[1]等。你可以使用普通对象,看看这个链接:less-broken.com/blog/2010/12/…
  • 我希望这条评论解决了我的疑问 :) 我接受了这个答案。谢谢
  • 感谢您接受我的回答。 JavaScript 对象(键值对)是您一直在寻找的东西吗?
  • 并非如此。关联数组是我一直在寻找的。因为 JS 不存在,所以我的问题解决了 :)
【解决方案2】:

例子:

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

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

【讨论】:

【解决方案3】:

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

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

alert(contacts['last']);

【讨论】:

  • 我认为你从一个对象中调用了一个属性。我希望从具有变量名的数组中调用一个对象。我不确定我是否出错了
【解决方案4】:

您可以使用数组原型中的过滤功能来查询您的数组。

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.

【讨论】:

    【解决方案5】:

    在 javascript 对象中,我们通常将值保存在 Key: Value 对中。

    你可以像这样使用:

    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);
    

    希望对你有帮助

    【讨论】:

    • 这只是对象仪式?不是数组。如果我错了,请纠正我
    • 是的,这是一个对象。在 JS 中,数组只是一种对象。他们都致力于 Key : Value 对的概念。不同之处仅在于在对象中我们明确指定 Key 和 Value(如 var x = {"fname":"mark"}),但在 Arrays JS 中自动索引以 0 开头的数字的键(如 var x= ["mark "])。我们会像 x.fname || 一样访问它们x["fname"] 和 x[0] 分别
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-10
    • 2021-09-28
    • 1970-01-01
    • 1970-01-01
    • 2015-08-10
    • 1970-01-01
    相关资源
    最近更新 更多