2012-03-02 103 views
1

首先,我不确定它是否实际上可以在JavaScript中使用,但仍然觉得值得提问。在运行时动态获取javascript数组成员的名字

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

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

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

这里,Result是具有成员像member_name1,对象member_name2等的名称和theu具有值等value_1和分别为value_2。我正在尝试的是在运行时获取此类成员的名称,如member_name1;不是它的价值。我通常访问Results.member_name1的值。

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

下面是对象的截图:

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

谢谢!

回答

3

假设obj是你的对象,你可以得到它的所有属性的名称是这样的:

var names = []; 

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

但是,请注意,这也将拿起已经通过prototype作出obj任何扩展属于它的类。如果要排除这些,只得到了性能上obj定义本身,就可以与for...inon MDN

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

更多信息筛选出来。

+0

谢谢一个男人!你提供的链接为我创造了奇迹! – Anupam 2012-03-03 08:43:10

1

您可以使用JavaScript 构造访问它们。考虑以下内容:

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数组,然后在那里访问它们。