javascript
  • arrays
  • 2016-09-13 35 views 0 likes 
    0

    我已经充满了纬度和经度对的数组推这样为什么我的JavaScript浮点数被切分?

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

    的值可以像51.5或-0.11666666666666667等

    然后该阵列被存储在cookie中为一个数组。

    当我尝试读取cookie内容,它看起来像这样,当在研究它

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

    产生的结果是这样的:

    doneDotsA = 51.5 | -0.11666666666666667

    到目前为止好。然而,当我尝试提取这样

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

    警报显示的值 'VAL = 5',然后 'VAL = 1',则 'VAL ='。然后'val = 5'等。不知怎的,一次只能读取一个字符,而不是像我期望的那样返回完整的数字。

    是否将数组保存到cookie中对数字做些什么?

    有什么想法?

    +1

    你的循环正在逐步穿过字符串。 –

    +0

    当您在考虑'index'迭代'string'时,返回'string'of指定的'index'中的每个字符, 使用'String#split'。 – Rayon

    +1

    在你的提取中,'doneDotsA'似乎不是一个数组。你能告诉我们整个代码吗? – Bergi

    回答

    1

    存储在cookie作为数组

    Cookies是always stored and retrieved as a string,除非你使用自定义代码将它重建成事实后的数组。

    +0

    是的,它存储为一个字符串。 var str = readCookie('doneDots'); doneDotsA = str.split( “|”);把它变回一个数组 – user2016210

    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块。一个结构不良的结构会抛出异常。

    相关问题