在本地存储器JavaScript上用不同的值存储对象若干次

i5desfxk  于 2022-12-21  发布在  Java
关注(0)|答案(2)|浏览(131)

我刚刚开始使用JS。下面是我的代码:

score = {
        name: name,
        maxTurns: maxTurns,
        lowestProbability: lowestProbability * 100 + '%',
        totalTurns: totalTurns,
        initialProbability: initialProbability,
        totalSuccess: totalSuccess,
        date: new Date().getTime() 
    }
   
    console.log(localStorage.getItem('score')); 
    
   
    let localData = localStorage.getItem('score') + JSON.stringify(score);
    localStorage.setItem("score", localData);

不幸是,它不太好用,我不知道为什么。
有时候我得到了我想要的:一行输入结果,有时我有大量的错误值的数据。有人能解释和帮助吗?
我试着用push把数据添加到旧的结果中,但是对字符串不起作用,然后我试着用+,但是也不总是起作用。

hfsqlsce

hfsqlsce1#

据我所知,您将多次在本地存储中保存来自API的分数,并在需要时将其取回。出于演示目的,我使用字符串作为数据值。
您可以尝试以下代码:

score = {
  name: "name",
  maxTurns: "maxTurns",
  lowestProbability: "lowestProbability%",
  totalTurns: "totalTurns",
  initialProbability: "initialProbability",
  totalSuccess: "totalSuccess",
  date: "new Date().getTime() "
};

let localData;
let limit = 2; //Only adds the data 2 more times.

for (let index = 0; index <= limit; index++) {
  index === 0
    ? (localData = { [index]: score })
    : (localData = Object.assign(JSON.parse(localStorage.getItem("score")), {
        [index]: score
      }));

  localStorage.setItem("score", JSON.stringify(localData));

  console.log(
    `LocalStorage  Iteration ${index}: `,
    JSON.parse(localStorage.getItem("score"))
  );
}

您可以在此处查看演示:https://codepen.io/dreambold/pen/vYaBwjq?editors=1010

bmp9r5qi

bmp9r5qi2#

基本上,您应该在检索项目之前对其进行设置。
因此,在console.log之前,应在localStorage中设置分数:
window.localStorage.setItem("score", JSON.stringify(score));
请注意,我使用了window.localStorage,以确保我正在使用localStorage
之后,您可以从本地存储中获取该值,如果需要,也可以再次设置它。
希望这对你有帮助。

相关问题