从数组 JavaScript 转换 var 时,parseFloat 返回 NaN
parseFloat returning NaN when converting var from array JavaScript
我试图将一个值转换为浮点数,我从一个数组中得到它,但它总是以 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
您似乎有一个对象数组,您需要从中获取 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));
因为您传递的对象包含 {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')
(八进制)将 return 8
,但不是预期的 10
。
您的数组包含一堆对象,因此您需要适当地访问每个对象的属性。您可以使用 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));
}
我试图将一个值转换为浮点数,我从一个数组中得到它,但它总是以 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
您似乎有一个对象数组,您需要从中获取 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));
因为您传递的对象包含 {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')
(八进制)将 return 8
,但不是预期的 10
。
您的数组包含一堆对象,因此您需要适当地访问每个对象的属性。您可以使用 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));
}