parseFloat возвращает NaN при преобразовании var из массива JavaScript - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь преобразовать значение в число с плавающей точкой, которое я получаю из массива, но оно всегда получается как NaN, даже если оно начинается с числа. Что я делаю не так?

var lat = <?php echo json_encode($result1); ?>;
for(var i = 0; i<lat.length; i++){
    //var lokacija = {lat: parseFloat(lat[i]), lng: parseFloat(lng[i])};
    //var marker = new google.maps.Marker({position: lokacija, map: map}); 
    var num2 = lat[i];
    console.log(lat[i]);
    console.log(parseFloat(num2)
}

В консоли это выглядит так (массив содержит значения tvo): https://i.gyazo.com/31d5e613a7abee5f86daa52895561b5d.png

Ответы [ 3 ]

0 голосов
/ 23 января 2019

Поскольку вы передаете объект, который содержит {lat: "46.14...."}

Попробуйте передать lat[i].lat в parserFloat функцию.

или в вашем коде:

   var lat = <?php echo json_encode($result1); ?>;
   for(var i = 0; i<lat.length; i++){
     //var lokacija = {lat: parseFloat(lat[i]), lng: parseFloat(lng[i])};
     //var marker = new google.maps.Marker({position: lokacija, map: map}); 
     var num2 = lat[i].lat;
     console.log(lat[i]);
     console.log(parseFloat(num2));
}

и некоторые советы на будущее - всегда указывайте параметр radix (обычно 10), чтобы избежать неожиданного поведения, например: parseFloat('010') (восьмеричное) вернет 8, но не ожидается 10.

0 голосов
/ 23 января 2019

Ваш массив содержит несколько объектов, поэтому вам необходимо соответствующим образом обращаться к свойствам каждого объекта. Вы можете использовать деструктуризацию объектов ES6 как один из способов достижения этого (назвав вашу переменную так же, как свойство, к которому вы пытаетесь получить доступ из объекта)

var lats = [{
  lat: "46.14949843"
}, {
  lat: "-21.20654846"
}];


for (var i = 0; i < lats.length; i++) {
  const {
    lat
  } = lats[i];
  console.log(parseFloat(lat));
}
0 голосов
/ 23 января 2019

Похоже, у вас есть массив объектов, из которых вам нужно свойство lat:

var arr = <?php echo json_encode($result1); ?>;
for (var i = 0; i < arr.length; i++){
  var num2 = arr[i].lat;
  console.log(parseFloat(num2);
}

Более современный подход к этому:

arr.forEach(({ lat }) => console.log(parseFloat(lat));
...