我有一行代码说——
var latitude = JSON.stringify(place.lat);
当我做警报(纬度)时——它给了我输出“33.232342”。但我想要这个数字,所以当我这样做的时候
var latitude = parseFloat(JSON.stringify(place.lat));
我得到了 NaN。有人可以告诉我可能是什么问题吗?
谢谢
我有一行代码说——
var latitude = JSON.stringify(place.lat);
当我做警报(纬度)时——它给了我输出“33.232342”。但我想要这个数字,所以当我这样做的时候
var latitude = parseFloat(JSON.stringify(place.lat));
我得到了 NaN。有人可以告诉我可能是什么问题吗?
谢谢
你place.lat
的已经是string
. 这样做JSON.stringify()
使""33.232342""
.
只是:
parseFloat(place.lat);
JSON.stringify
将原语转换为字符串,因此:
JSON.stringify(5.1)
返回 5 个字符的字符串
"5.1"
将这样的值传递到parseFloat
结果中NaN
。只需不要JSON.stringify
value,您的代码应该可以正常工作。
值得注意的是,JSON 规范只允许对象和数组作为 JSON 表示中的顶级元素,因此“JSON-ify”原始数字不符合规范(但您的浏览器无论如何都会这样做)。
问题是 place.lat 是一个字符串,所以当你对它进行字符串化时,你会得到一个带引号的字符串。
这与使用相同的结果
parseFloat(JSON.stringify("3.5"))
那是
NaN
一个解决方案是直接解析 place.lat :parseFloat(place.lat)
如果你想解析一个带引号的字符串中的数字,你也可以这样做
parseFloat(str.slice(1,-1))
问题根源在这里:
JSON.stringify(place.lat)
return "' 20.0120132312'"
,其中有一个前导'
。只需使用:
parseFloat(place.lat);
JSON.stringify
如果它已经是一个对象,你为什么要ing 它?
做吧parseFloat(place.lat)
。
您必须调用:
parseFloat(JSON.parse(latitude))