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