无法推送到数组对象

时间:2014-06-20 15:28:57

标签: javascript arrays object

我有数组对象的问题。 我有变量"设置"。 如果我写:

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(数据);给我字符串数据。

加了:

变体hardcodded中的

console.log(tempSettings)确实:

[Object {Id = 1,name =" Test1"},Object {Id = 2,name =" Test2"}]

收到的变量中的

和console.log(设置)确实: []。

但在点击控制台后我看到:

[0]对象{id =" 3",name =" Test3"},[1]对象{id =" 4",name =& #34; TEST4"}。

1 个答案:

答案 0 :(得分:1)

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]);
});