Как остановить перезапись локального хранилища - PullRequest
0 голосов
/ 04 апреля 2020

Я не очень хорошо понимаю локальное хранилище, поэтому надеюсь, что объясню это правильно. Не вдаваясь в контекст моей программы, я в основном хочу, чтобы при каждом запуске программы устанавливались два ключевых значения: «имя команды» и «общее количество баллов», однако при каждом запуске программы эти значения перезаписываются на самое предыдущее время. они были установлены. Я видел где-то, что мне нужно включить массив для решения этой проблемы, однако я действительно не знаю, что делать.

function store()
{
localStorage.setItem("key value",[teamname, totalpoints]);
document.write(localStorage.getItem("key value"));
}

Ответы [ 2 ]

0 голосов
/ 05 апреля 2020

Когда вы сначала создаете переменные teamname и totalpoints, затем извлекайте их из локального хранилища.

let [ teamname = 'defaultName', totalpoints = 0 ] = JSON.parse( localStorage.getItem('teamKey') || '[]');

Затем, когда вы сохраняете значения:

function store()
{
   localStorage.setItem( "teamKey", JSON.stringify( [ teamname, totalpoints ] ));
  document.write(localStorage.getItem("key value"));
}

Вы Вам захочется разбить на строку / разобрать при вводе и получении значений из localStorage, потому что он становится строкой, и таким образом вы можете получить обратно объект, который вы помещаете.

Редактировать: я чувствую, что мы все неправильно поняли то, что вы спрашивали for:

Для добавления к массиву каждый раз, когда вы сохраняете, вам нужно, чтобы leaderBoard был массивом объектов, где объекты являются {teamName: string, totalPoints: number}. А затем добавляйте в массив каждый раз, когда сохраняете строку. Вы также можете проверить, хотите ли вы видеть, есть ли команда в списке лидеров, и определить, добавите ли вы их снова в этот список.

let leaderBoard = JSON.parse( localStorage.getItem('leaderBoard') || '[]');

Затем, когда вы сохраните значения:

function store(teamName,totalPoints)
{
   localStorage.setItem( "leaderBoard", JSON.stringify( [...leaderBoard,{teamName,totalPoints} ));
  // depending on what you want to afterwards, you probably need to update leaderBoard variable to the latest as well.
  leaderBoard = JSON.parse(localStorage.getItem("leaderBoard"));
  document.write(localStorage.getItem("leaderBoard"));
}

При вводе и получении значений из localStorage вы захотите привести в соответствие / проанализировать значения, потому что он становится строкой, и таким образом вы можете вернуть объект, который вы помещаете.

0 голосов
/ 04 апреля 2020

Если я понимаю ваш вопрос, все, что вам нужно, это какой-то способ проверить статус пользователя, и, если он уже посетил, не перезаписывайте имя или счет его команды:

let teamname
let totalpoints

if(localStorage.getItem("visited") !== "true"){
   teamname = /* your code here */
   totalpoints = /* your code here */

   localStorage.setItem("teamname", teamname)
   localStorage.setItem("totalpoints", totalpoints)
   localStorage.setItem("visited", true)
}else{
   /* do something else */
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...