Node.js设置变量未定义

时间:2018-11-05 12:23:27

标签: javascript node.js json aws-lambda

我正在尝试在Node.js中为aws-lambda编译这部分代码,但是最后的变量latIT仍然是undefined

try {
    var urlfile ='https://url of json file';
    var data = JSON.parse(urlfile, 'utf8');
    for (var i = 0; i < data.length; i++) {
        var latIT = data.results[i].geometry.location.lat;
    }
    return latIT;
} catch(error) {
    //error 
}

json的内容如下:

{
   "results" : [
      {  "geometry" : {
            "location" : {
               "lat" : 37.422593,
               "lng" : -122.0853986
            }
          }
       }
   ]
}

2 个答案:

答案 0 :(得分:0)

遍历数组而不是遍历数据。 在您的json数据中。结果是一个数组,而不是数据

//Easy implemenation
for(var temp of jsonObj.results){
  console.log(temp.geometry.location.lat);
}

var jsonObj = {
   "results" : [
      {  "geometry" : {
            "location" : {
               "lat" : 37.422593,
               "lng" : -122.0853986
            }
          }
       }
   ]
};

var latIT;
for(var temp of jsonObj.results){
  latIT = temp.geometry.location.lat;
}
console.log(latIT);

答案 1 :(得分:0)

假设data变量具有与您发布的JSON相同的形状,则当对象不具有此类属性时,您的错误是指data.length。数组自动具有length属性,但是这里的data是对象,而不是数组。看来您打算改为检查data.results.length。 (data.results 一个数组,这似乎是您要迭代的内容。)