在运行时动态获取javascript中数组成员的名称

时间:2012-03-02 08:12:30

标签: javascript object runtime dynamically-generated members

首先,我不确定它是否真的可以在javascript中使用,但我仍觉得值得一提。

好的,所以我要做的是在运行时动态获取数组成员(或者你想说的对象)的名称。

让我解释一下。我有一个像这样的对象:

Results :-
member_name1 : value_1
member_name2 : value_2
member_name3 : value_3

此处,Result是包含member_name1member_name2等成员的对象的名称,而theu的值分别为value_1value_2 。我想要做的是在运行时获取像member_name1这样的成员的名字;不是它的价值。我通常会Results.member_name1访问该值。

我希望我能够描述这个问题!

以下是该对象的屏幕截图:

http://i.stack.imgur.com/dzAgm.png

谢谢!

2 个答案:

答案 0 :(得分:3)

假设obj是您的对象,您可以通过这种方式获取其所有属性的名称:

var names = [];

for(var name in obj) {
    names.push(name);
}

但是,请注意,这也将获取通过其类obj属性对prototype进行的任何扩展。如果您要排除这些内容并且只获取obj本身定义的属性,可以使用

过滤掉它们
for(var name in obj) {
    if(obj.hasOwnProperty(name)) {
        names.push(name);
    }
}

有关for...in on MDN的更多信息。

答案 1 :(得分:1)

您可以使用JavaScript for 构造来访问它们。请考虑以下事项:

var member_names = [],
    data = {
        foo1: 'bar1',
        foo2: 'bar2',
        foo3: 'bar3',
    };

​for (var i in data) {
    member_names.push(i);
}

console.log(member_names);

这里我们有一个名为* member_names *的空数组和你的数据对象。在我们的循环中, i 将引用属性名称,因此您可以将其推送到member_names数组,然后可以访问它们。