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

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/

10-12 12:25
查看更多