在javascript中比较位置的正确方法
我遵循了从csv和json中表示位置的单个对象:在javascript中比较位置的正确方法,javascript,Javascript,我遵循了从csv和json中表示位置的单个对象: "value_location1": { "json_lat": "-118.3844000", "csv_lat": "-118.3844" }, "value_location2": { "json_lat": "-117.933122", "csv_lat": "-117.933122" }, 实际上,我有这些对象的145k(importent)数组,我需要找到好方法使value\u location.csv\
"value_location1": {
"json_lat": "-118.3844000",
"csv_lat": "-118.3844"
},
"value_location2": {
"json_lat": "-117.933122",
"csv_lat": "-117.933122"
},
实际上,我有这些对象的145k(importent)数组,我需要找到好方法使value\u location.csv\u lat
和value\u location.json\u lat
相等
如您所见,json\u lat
在csv\u lat
--118.3844
时提供-118.3844000
两者的值都与double相同,但与String不同
应该是什么,高性能,这样做的方式
谢谢,只需将值复制到浮点值并比较浮点值
或者您可能会陷入这个问题,对于初学者来说,JavaScript只有
number
数据类型。但是,如果希望这两个数字等于相同的字符串
,请使用toFixed()
方法获取所需的小数点数量。像这样:
var example_number = 5.333000;
var rounded_number = example_number.toFixed(2);
alert(rounded_number);
我不完全明白你在这里的意思。如果你想要这个: 我需要找到一个好方法使value_location.csv_lat和value_location.json_lat相等
然后
value\u location.csv\u lat=value\u location.json\u lat
就可以了。你的问题不清楚,请学习(你说“想让它们相等”,但你要检查字符串中包含的数字是否相等,这根本不是一回事)
您正在尝试将这些字符串转换为浮点数吗?然后使用,然后可以将它们作为浮点数进行比较()
无论冒号后面有多少位数字,您是否试图删除字符串末尾的额外0?如果是这样,只需在parseFloat()之后将它们转换回字符串
parseFloat(string).toFixed(4)
根据您的javascript对象,两者的值与double相同,但与string不同
->。这两个属性定义为字符串。因此,您必须将这些字符串解析为实际的浮点数(parseFloat
),然后对结果进行四舍五入(.toFixed
)注意,使用toFixed()
,您也将得到一个字符串,而不是一个浮点数。@adeneo,我添加了另一个对象,我知道这是个好办法,但我不想把点后的数字减少到4位。有时我可以得到点后的lat或long 5-8位数,我在所有145k对象上循环运行。Thanks@Lepidosteus-总是有(string*1000)/1000
来解决这个问题。parseFloat通常会删除零。json对象返回csv_lat
和json_lat
作为字符串和-118.3844000!=-118.3844
@MaximShoustin但你到底想要什么?如果要使它们相同,只需将一个值复制到另一个值即可。
value_location.csv_lat = parseFloat(value_location.csv_lat, 10);
// value_location.json_lat is the number -118.3844
value_location.json_lat = parseFloat(value_location.json_lat, 10);
// value_location.csv_lat is the number -118.3844
value_location.csv_lat = parseFloat(value_location.csv_lat, 10) + '';
// value_location.json_lat is the string "-118.3844"
value_location.json_lat = parseFloat(value_location.json_lat, 10) + '';
// value_location.csv_lat is the string "-118.3844"