如何在Javascript中将浮点坐标数组保存和检索到localStorage?

如何在Javascript中将浮点坐标数组保存和检索到localStorage?,javascript,arrays,json,local-storage,Javascript,Arrays,Json,Local Storage,我想将5个按钮坐标保存到localStorage中,然后检索它们以用于单击事件,以确定何时单击按钮。按钮的中心坐标在渲染时保存到阵列中。检索对象时,我只能将其作为单个字符串而不是数组进行访问 如何将它们保存为数组?我该如何取回它们 我不确定我想做的是否可能,因为这是我使用JSON的第一个想法。这个想法来自于对它的研究,这让我问这是否是一种存储和接收一组浮点数的方法。因此,如果有人能为我指出正确的方向,我将不胜感激 渲染期间 var xButtonCoords = []; var yB

我想将5个按钮坐标保存到
localStorage
中,然后检索它们以用于单击事件,以确定何时单击按钮。按钮的中心坐标在渲染时保存到阵列中。检索对象时,我只能将其作为单个字符串而不是数组进行访问

如何将它们保存为数组?我该如何取回它们

我不确定我想做的是否可能,因为这是我使用
JSON
的第一个想法。这个想法来自于对它的研究,这让我问这是否是一种存储和接收一组浮点数的方法。因此,如果有人能为我指出正确的方向,我将不胜感激

渲染期间

 var xButtonCoords = [];    
 var yButtonCoords = [];
     xButtonCoords.push(button.x.toPrecision(6));
     yButtonCoords.push(button.y.toPrecision(6));   
渲染完成后,坐标将保存到
localStorage

 store(xButtonCoords, yButtonCoords); 
store
函数将按钮坐标打包为字符串对象,然后再存储

function store(xButtonCoords, yButtonCoords) {
var xCoords = packString(xButtonCoords, xButtonCoords.length);   // show just x coordinate
localStorage.setItem('xCoords', JSON.stringify(xCoords));        // put into storage
在将对象放入存储器之前,
packString
函数将按钮坐标表示为字符串。字符串对象使用键值对

function packString(points, numberOf) {
var coords = [];
for (i = 0; i < numberOf; i++) {                                  // do number of shifts
    var key = i;                                                  // make a coordinate key
    var val = points.shift();                                     // get coordinate value
    var string = key+" : "+val;                                   // create key value string
    coords.push(string);                                          // save string as coords
    }
    return coords;
}
检索到的对象显示为字符串。

注意。键中的五个字符串整数表示按钮的呈现顺序。我试图创建一个由5个浮点数组成的数组,而不是一个字符串

for (var [key, value] of Object.entries(report)) {
    alert(`${key}: ${value}`);                                   // characters not elements
    }
}

您应该使用数组而不是对象,因为您需要索引,所以您可以使用JSON.stringify从数组生成JSON字符串,然后将其存储在localStorage中,当您要检索它时,只需对其执行JSON.parse,就可以取回数组,下面是一个小示例,请注意,堆栈片段不允许使用本地存储,所以我只使用了一个对象,当然这是相同的想法

//将数组另存为字符串
VarA=[0.1,1.2,2.3,3.4,4.5],myLocalStorage={};
myLocalStorage.a=JSON.stringify(a);
//它是一个字符串,所以您只能得到第一个字符
console.log(myLocalStorage.a[0]);
//将其返回到数组,以便获得第一项
var b=JSON.parse(myLocalStorage.a);

console.log(b[0])我实际上通过这个发现了重复:虽然浮点数确实有它们的滑稽动作,但实际上并没有使用它们:
toPrecision
调用返回字符串。要返回数字,请使用
parseFloat
(显示意图)或仅使用
Number()
这些数字。在packString函数中进行此更改:var string=new Object();字符串[i]=val;推(弦);现在,它将顺序存储为键,坐标存储为值。一旦您检索到它,它应该会更容易处理。我将尝试使用localStorage
for (var [key, value] of Object.entries(report)) {
    alert(`${key}: ${value}`);                                   // characters not elements
    }
}