分配JavaScript对象的内部对象键

我想创建这样一个对象:分配JavaScript对象的内部对象键

var servers = 

{

'local1' :

{

name: 'local1',

ip: '10.10.10.1'

},

'local2' :

{

name: 'local2',

ip: '10.10.10.2'

}

}

这是我在做什么

$.each(servers, function(key, server) 

{

servers[server.name] = server;

});

如果服务器就像是这些对象的数组:

{ 

name: 'local1',

ip: '10.10.10.1'

}

但上面的代码不会将任何键指定给对象,所以键默认为0,1,2 ....

回答:

javascript中的AFAIK []用于索引数组,而要访问对象属性则必须使用点符号。所以你的代码应该是:

$.each(servers, function(key, server) 

{

var name = server.name;

eval("servers." + name + " = server");

});

请试试看,因为我没有测试它。

回答:

我注意到的一个潜在的错误是您正在修改您正在迭代的对象(服务器)。创建一个在循环中修改的新空对象可能会很好。

另外,如果您发布了一些示例数据,那么我们可以为自己运行您的代码,这会有所帮助。

最后,您可以尝试在其中插入一个调试器关键字并逐步完成代码。

回答:

在Chrome中,如果您运行此:

a = []; 

b = {n:"c",i:"1.2.3.4"};

a[b.n] = b;

alert (a["c"].i);

alert (a.c.i);

你会拿到 “1.2.3.4” 字符串作为预期。但是,如果将示例更改为:

a = {}; 

b = {n:"c",i:"1.2.3.4"};

a[b.n] = b;

alert (a.c.i);

您将再次获得相同的“1.2.3.4”:)。所以答案是:您的代码按照您的要求将属性分配给对象。唯一的区别是在第一个例子中,你使用了数组作为对象,其次是简单的对象。

以上是 分配JavaScript对象的内部对象键 的全部内容, 来源链接: utcz.com/qa/264914.html

回到顶部