Переменная набора Node.js не определена - PullRequest
0 голосов
/ 05 ноября 2018

Я пытаюсь скомпилировать эту часть кода в 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 голосов
/ 05 ноября 2018

Предполагая, что переменная data имеет ту же форму, что и опубликованный вами JSON, ваша ошибка относится к data.length, когда объект не имеет такого свойства. Массивы автоматически имеют свойство length, но data здесь является объектом, а не массивом. Похоже, вы хотели проверить data.results.length. (data.results - это массив, и это похоже на то, что вы перебираете.)

0 голосов
/ 05 ноября 2018

Итерация по массиву вместо итерации по данным. В ваших данных 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...