在JavaScript中访问数组中对象的值

时间:2015-10-25 07:47:55

标签: javascript

我知道对象中的属性可以作为[]后缀中的字符串表达式检索.notation或wrap key。例如

var character = {
   "name" : "Gloria",
   "feature" : "Dance"
};

console.log("using .notation: "+character.name);
console.log("using []suffix: "+character["name"]);

它的效果非常好。但是,当我通过从对象数组中检索值来执行相同操作时, .Notation 根本不起作用。代码如下所示。

var info = {
"full_name" : "Some Name",
"title" : "Some title",
"links" : [
        { "blog"     : "http://iviewsource.com" },
        { "facebook" : "http://facebook.com/iviewsource" },
        { "youtube"  : "http://www.youtube.com/planetoftheweb" },
        { "podcast"  : "http://feeds.feedburner.com/authoredcontent" },
        { "twitter"  : "http://twitter.com/planetoftheweb" }
    ]
};

然后,当我尝试使用以下代码段

从数组中的每个对象检索值时
for(var i = 0; i < info.links.length; i++) {
    for(var key in info.links[i]) {
        console.log("key is: "+key+" and it's value: "+info.links[i][key]);         
    }
}

在上面的代码中,要检索我正在使用 info.links [i] [key] 的值,它会按预期工作,但如果我使用 info.links [i] .key ,它只是给出了我未预料到的未定义。
我想知道为什么?这让我很困惑。

2 个答案:

答案 0 :(得分:0)

key不是该对象的属性,这就是它无法工作的原因。密钥是您要访问的密钥的另一个元素。

在JavaScript中,

obj.key

将访问key对象的obj 属性。但是下面的代码,

obj["key"]

将访问&#34; key&#34;中的元素。您应该考虑更多地关注映射值,也称为词典或Map

答案 1 :(得分:0)

如果您确实使用info.links[i].key,那么它将无效,因为没有与名为key的键相关联的值。如果你有其他意思,请编辑问题以反映这一点。

拥有一个链接名称为密钥的数据结构也有点误导。拥有密钥名称和链接会更好,然后您可以通过info.links[i].nameinfo.links[i].link

为每个链接以相同的方式获取它们