我对数组对象有问题。
我有变量“设置”。
如果我写:
var settings=[];
var tempSettings=[{
id:1,
name:"Test1"
},
{
id:2,
name:"Test2"
}
];
settings=tempSettings;
console.log(settings[0]);
好吧,所有工作。设置[0]-没问题;
但是,如果我从文件接收数据并执行以下操作:
jQuery.getJSON("myurl", function(data) {
console.log(data);
var zones=data.split("~");
jQuery.each(zones, function(key, value) {
var set = value.split(",");
var tset={
id:set[0],
name:set[1]
};
settings.push(tset);
});
});
console.log(settings[0]);
此设置无效[0]-未定义。
我怎么了
我收到的数据和console.log(data);给我字符串数据。
添加:
hardcodded变体中的console.log(tempSettings)可以:
[对象{Id = 1,名称=“ Test1”},对象{Id = 2,名称=“ Test2”}]
和console.log(settings)在接收到的变量中:
[]。
但在单击控制台后,我看到:
[0]对象{id =“ 3”,name =“ Test3”},[1]对象{id =“ 4”,name =“ Test4”}。
最佳答案
getJSON
是异步的。您需要在回调函数中包含console.log
:
jQuery.getJSON("myurl", function(data) {
console.log(data);
var zones=data.split("~");
jQuery.each(zones, function(key, value) {
var set = value.split(",");
var tset = {
id:set[0],
name:set[1]
};
settings.push(tset);
});
console.log(settings[0]);
});
关于javascript - 无法推送到数组对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24330782/