【问题标题】:parseFloat returning NaN when converting var from array JavaScript从数组 JavaScript 转换 var 时,parseFloat 返回 NaN
【发布时间】:2019-01-23 18:56:36
【问题描述】:

我试图将一个值转换为浮点数,我从一个数组中获得,但它总是以 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

【问题讨论】:

  • 试试console.log(parseFloat(num2.lat))

标签: javascript arrays parsefloat


【解决方案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));

【讨论】:

    【解决方案2】:

    因为你传递的对象包含{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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-28
        • 1970-01-01
        • 2016-11-16
        • 1970-01-01
        • 2016-02-15
        相关资源
        最近更新 更多