为什么我的javascript浮点数被切成碎片?

时间:2016-09-13 18:16:00

标签: javascript arrays

我有一个阵列充满了像这样推动的纬度和经度对

doneDotsA.push(lat+"|"+lon);

值可能看起来像51.5或-0.11666666666666667等

然后数组作为数组存储在cookie中。

当我尝试读取cookie内容时,在In检查它时看起来像这样

alert('doneDotsA='+doneDotsA.toString());

产生如下结果:

doneDotsA = 51.5 | -0.11666666666666667

到目前为止一切顺利。但是,当我尝试提取像这样的值时

for (var t = 0; t < doneDotsA.length; t++) { 
    alert('val='+doneDotsA[t]);
}

警报显示&#39; val = 5&#39;然后&#39; val = 1&#39;然后&#39; val =。&#39;然后&#39; val = 5&#39;以某种方式一次只读一个字符而不是返回完整的数字,因为我希望它能做到。

将数组保存到cookie中对数字执行某些操作吗?

任何想法?

2 个答案:

答案 0 :(得分:1)

  

作为数组存储在cookie中

Cookie是always stored and retrieved as a string,除非您在事后使用自定义代码将其重建为数组。

答案 1 :(得分:0)

这样的解决方案可以是获取您的经度和经度并将它们放入JSON对象中以便在cookie中进行序列化和存储。然后,您可以在网站加载时将它们解析为对象。

var coords = {
   points:[
    {lat:12.4444446,lon:44.55555},
    {lat:12.4444446,lon:44.55555}
   ]
};
var serialized = JSON.stringify(coords);
toStore(serialized);

然后您可以将其设置为本地存储或任何可以存储字符串的位置。

var myLoaded = fromStore();
var coords = JSON.parse(myLoaded);
coords.points.each(function(coord) {
  // do something with points. 
});

然后你应该能够对你保存的积分做点什么。

一个注意事项:您可能想要检查myLoaded不是空字符串或try / catch块中的包解析。形成不良的结构会引发异常。