从数组JavaScript转换var时parseFloat返回NaN

时间:2019-01-23 18:56:37

标签: javascript arrays parsefloat

我正在尝试将值从数组中转换为浮点型,但即使它以数字开头,也总是以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 :(得分:1)

似乎您有一个需要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));

答案 1 :(得分:1)

因为您传递的对象包含{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));
}

和将来的一些技巧-始终指定基数参数(通常为10),以避免任何类似的意外行为,例如:parseFloat('010')(八进制)将返回8,但不会返回预期10

答案 2 :(得分:0)

您的数组包含一堆对象,因此您需要适当地访问每个对象的属性。您可以使用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));
}