【问题标题】:undefined while reading array item on a for loop [duplicate]在for循环上读取数组项时未定义[重复]
【发布时间】:2020-03-01 23:04:44
【问题描述】:

我正在做一个 for 循环来检查一些值,这里是一个简短的版本。我不明白为什么console.log(indirizzo[a]); 给出 undefined 而如果我这样做console.log(indirizzo); 我得到所有值

  var indirizzo = [];

  for (var i = 0; i < savedRepods.length; i++) {
    for (var a = 0; a < ids.length; a++) {
      if(savedRepods[i] == ids[a]) {
        var geocoder = new google.maps.Geocoder;
        var latlngStr = coords[a].split(',', 2);
        var latlng = {lat: parseFloat(latlngStr[0]), lng: parseFloat(latlngStr[1])};
        geocoder.geocode({'location': latlng}, function(results, status) {
          indirizzo.push(results[0].formatted_address);
        });
        console.log(indirizzo[a]);
      }
    }
  }

如果我这样做的结果console.log(indirizzo);

0: "Corso Vittorio Emanuele, 1, 09017 Sant'Antioco SU, Italia"
1: "Via Nazionale, 78, 09017 Sant'Antioco SU, Italia"
2: "Via Giosuè Carducci, 15, 09017 Sant'Antioco SU, Italia"
3: "Via Perret, 11, 09017 Sant'Antioco SU, Italia"
4: "Lungomare Amerigo Vespucci, 2A, 09017 Sant'Antioco SU, Italia"

如果我这样做的结果console.log(indirizzo[a]);

undefined

【问题讨论】:

  • 地理编码器是异步的
  • @geocodezip 我明白了,那我该如何解决呢?
  • @geocodezip 我正在尝试遵循答案,但它令人困惑,我应该使用 setTimeOut 吗?
  • setTimeout 通常是解决异步问题的“坏主意”©(您可能可以使其工作,但您要么浪费时间,要么会遇到间歇性问题)。在可用时/在哪里使用回调函数中的数据
  • @geocodezip 我真的对回调感到困惑,也请阅读文档。你能给出答案吗?

标签: javascript jquery google-maps


【解决方案1】:

这里的这一行将为每个 id 添加a + 1。我假设id数组比4长,这将比indirizzo的项目数长,从而导致未定义

for (var a = 0; a < ids.length; a++) {

【讨论】:

  • 对,我该如何解决? -1 任何地方?
  • 你应该使用类似这样的 ``` for(var x=0;x
  • 有人告诉我地理编码器是异步的
  • 在这里得到了我的答案stackoverflow.com/a/60480896/1018804
猜你喜欢
  • 1970-01-01
  • 2011-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多