【问题标题】:Objects in javascript with for loop not being createdjavascript中没有创建for循环的对象
【发布时间】:2014-05-14 21:38:45
【问题描述】:

所以我想创建一组对象(更像是地方),以在我正在使用的谷歌地图插件中使用。我需要做的是创建数组“位置”,我需要在其中放置将使用 jscript 处理的所有属性,这是通过我从其他地方获取的 JSON 完成的,这是可行的,但正在填充上阵似乎是不可能的任务。问题是,我似乎无法创建数组,它只是把所有东西都搞砸了,什么都没有显示。

var places = [];
$.getJSON(url,function(data){
    $.each(data.lugar, function(i,user){
        places.push([user.latt.value, user.lng.value, user.nombre.value, user.direccion.value]);
        alert("Se añadio "+user.nombre);
    });
});

我正在尝试做一个假人,以查看它是否适用于首先使用简单的 FOR,但它不起作用。

var places[];

for(var x= 0; x<10; x++){
    places[x] = {
        autoShow: true,
        lat: 53.79+x,
        lng:-1.5426760000000286+x,
        name: "Somewhere "+x

    }
}

我不知道我错过了什么。正常调用应该是:

 var places = [

    {
        canEdit: true,
        lat: 53.798823,
        lng:-1.5426760000000286,

    },
    {
        canEdit: true,
        lat: 53.79,
        lng: -1.59,
        name: "Somewhere",
        street: "Over the rainbow, Up high way",
        userData: 99
    }
];

【问题讨论】:

  • 控制台是否显示错误?
  • 应该是var places = []; 而不是var places[];?
  • 在$.each 中你正在推送数组,在for 循环中你正在推送对象。你要哪个?

标签: javascript arrays object for-loop


【解决方案1】:

您错误地创建了数组变量:var places[]; 不是声明数组变量的正确方法,正确的语法应该是 var places = [];。 Mozilla 开发者网络article on Arrays 提供了有关数组及其在 Javascript 中的使用的更多信息。

【讨论】:

    【解决方案2】:

    我建议尝试 $.map 代替(为这类事情制作),如下所示:

    var places = $.map(data.lugar, function(i,user){
        return [user.latt.value, user.lng.value, user.nombre.value, user.direccion.value];
        // Do not check results on the UI thread here.
    });
    // check the results in on the UI thread here.
    

    【讨论】:

      猜你喜欢
      • 2012-07-23
      • 1970-01-01
      • 1970-01-01
      • 2018-08-12
      • 1970-01-01
      • 1970-01-01
      • 2012-12-27
      • 2020-09-28
      • 1970-01-01
      相关资源
      最近更新 更多