Объект, похожий на массив, не отображающий конкретные значения, но показывающий весь массив. (JavaScript) - PullRequest
0 голосов
/ 03 мая 2018

Я пытаюсь использовать сервис геокодирования карт Google. Он выдает значения как lat и lng в массиве. Я удалил эти значения и поместил их в отдельную переменную, чтобы использовать их в другом месте моего кода.

function geoCode(place,num){
var location = place;
axios.get('https://maps.googleapis.com/maps/api/geocode/json',{
  params:{
    address:location,
    key:''
  }
})
.then(function(response){
  hospitalLocations[num]={
    lat:float(response.data.results[0].geometry.location.lat),
    lng:float(response.data.results[0].geometry.location.lng),
  };
})
.catch(function(error){
  console.log(error);
});

В настройках я вспоминаю var:

console.log(typeof hospitalLocations);
console.log(hospitalLocations);
console.log(hospitalLocations[0]);

typeof дает мне «объект». hospitalLocations дает мне полный массив, который я могу открыть и увидеть значения, выложенные так же, как и обычный массив. Но когда я проверяю определенное значение, это дает мне неопределенное значение. Есть ли способ вытащить значения внутри? Спасибо

1 Ответ

0 голосов
/ 03 мая 2018

Вы должны заметить, что hospitalLocations является объектом, а не массивом. Как я могу понять из:

...
.then(function(response){
  hospitalLocations[num]={
    lat:float(response.data.results[0].geometry.location.lat),
    lng:float(response.data.results[0].geometry.location.lng),
  };
})
...

Так, обычно, если вы хотите перебрать объект, вы должны использовать следующий способ:

for (const [key, value] of Object.entries(hospitalLocations))
            console.log(value);

Надеюсь, это поможет вам, если это то, что вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...