Javascript js对象范围错误导致对象为空?

Javascript js对象范围错误导致对象为空?,javascript,scope,Javascript,Scope,我有以下代码,但不幸的是,items数组中的所有对象都是空的。我认为这是一个范围问题,但我自己无法解决: var items = []; var itemCount = results.data.length; $.each(results.data, function(index) { var item = results.data[index]; item.index = index; geocoder.geocode({ 'addres

我有以下代码,但不幸的是,items数组中的所有对象都是空的。我认为这是一个范围问题,但我自己无法解决:

var items = [];
var itemCount = results.data.length;
$.each(results.data, function(index) {
      var item = results.data[index];
      item.index = index;

      geocoder.geocode({
        'address': address
      }, function(results, status) {
        item.lat = results[0].geometry.location.lat();
        item.lng = results[0].geometry.location.lng();

        items.push(item);
        console.log(items[0]); // --> prints object with all properties

        if (items.length === itemCount) {
          console.log(items); // --> prints 3 empty objects
        }
      });
    }

看看它是否适合您:

var item = {};
$.each(results.data, function(index, value) {
    item[index] = value;
    geocoder.geocode( { 'address': address}, function(results, status) {
        item.lat = results[0].geometry.location.lat();
        item.lng = results[0].geometry.location.lng();
        var stops = [];
        stops.push(item);
        console.log(stops[0]); // --> prints object with all properties

        if(stops.length === stopCount){
             console.log(stops); 
        }
    });
});

您正在将项目推入
停止
,而不是
项目
。Sry这只是编辑问题。我更正了它。当您使用
console.log(项[0])
单独记录对象时,您是否看到对象仍然完全填充?@ZaidAjaj。所有属性都列为>对象{streetNumber:…},如您在控制台输出图像中看到的那样。我通常希望在打开对象时,属性显示为列表dropdown@Chris,尝试
alert
ing每个对象的属性,而不是将它们记录到控制台,可能Chrome的控制台输出对象数组的方式有问题……尝试以下操作:
items.map(函数(项){return item.streetNumber;}).forEach(警报)当我在geocode回调中初始化它时,我在stops中得到一个有效的对象,正如您在上面的代码中所做的那样。但是每次迭代都会停止重置,我在数组中只得到一个对象