Почему я получаю результат от «иначе, если», хотя «если» условие истинно - PullRequest
0 голосов
/ 24 сентября 2018

Обратное геокодирование Google дает мне такой результат

results: [
{address_components: [
{long_name: "New York",
short_name: "NY",
types: ["neighborhood"]},]

{address_components: [
{long_name: "London",
short_name: "LN",
types: ["sublocality_level_1"]},]}]

Вот код для получения результата для длинного имени «окрестности»:

for (i = 0; i < response.results.length; i++) {
for (var acd = 0; acd < response.results[i].address_components.length; acd++) {
var fff =  response.results[i].address_components[acd];
var storableLocation;
if(fff.types.includes("neighborhood")) {
storableLocation = fff.long_name;
}else if (fff.types.includes("sublocality_level_1")){
storableLocation = fff.long_name;}}}

console.log(storableLocation) gives result - London.

Почему он показывает результат для Лондона, еслипервое условие верно?это должно было утешить Нью-Йорк или я ошибаюсь?

1 Ответ

0 голосов
/ 24 сентября 2018

Поскольку console.log(storableLocation) находится за пределами обоих циклов, вы видите второе значение, которое было присвоено var storableLocation.Вы не видите первое значение, назначенное переменной, потому что к тому времени, когда вы console.log, циклы уже завершены и переназначены storableLocation в Лондон в операторе else if.

Вместо этого вы должны сделать следующее:

var results = [ {address_components: [
{long_name: "New York",
short_name: "NY",
types: ["neighborhood"]}]},

{address_components: [
{long_name: "London",
short_name: "LN",
types: ["sublocality_level_1"]}]}]

loop1:
for (i = 0; i < results.length; i++) {
   var storableLocation;
   loop2:
   for (var acd = 0; acd < results[i].address_components.length; acd++) {
       var fff =  results[i].address_components[acd];
       if(fff.types.includes("neighborhood")) {
          storableLocation = fff.long_name;
          console.log(storableLocation)
          break loop1;
       }
       else if (fff.types.includes("sublocality_level_1")){
          storableLocation = fff.long_name;
       }
   }
}
...