分配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