首页 > 解决方案 > 在 for 循环中读取数组项时未定义

问题描述

我正在做一个 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

标签: javascriptjquerygoogle-maps

解决方案


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

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

推荐阅读