Как перенести значения в локальное хранилище? - PullRequest
1 голос
/ 28 мая 2019

У меня есть следующий код в js.если я использую статический массив, все работает нормально.Иначе я получаю:

Uncaught TypeError: myArray.push не является функцией

function test(){
var myArray =  localStorage.getItem('articles')  ;
//myArray=[1,4,5];
needle = 2    ,
myArray.push(needle);
localStorage.setItem('articles', JSON.stringify(myArray))
console.log(localStorage.getItem('articles'));
}

Ответы [ 2 ]

3 голосов
/ 28 мая 2019

Поскольку вы его строковаете, вам нужно разобрать его в строковом формате, чтобы использовать push:

var myArray = JSON.parse(localStorage.getItem("articles"));
0 голосов
/ 28 мая 2019

Добавить проверку, существует ли «article» в localStorage и является ли он массивом. Если его еще нет. Инициализировал значение для него ("[]"); Вам нужно сначала проанализировать строку JSON, прежде чем помещать элемент в массив. Затем снова зашифруйте его, прежде чем обновлять localStorage. Пожалуйста, смотрите код ниже.

function test() {
  let myArray = localStorage.getItem("articles");
  //Check if localStorage has 'articles' and if that 'articles' is an array
  if (myArray && Array.isArray(JSON.parse(myArray))) {
    const needle = 2,
    myArray = JSON.parse(myArray).push(needle);
    localStorage.setItem("articles", JSON.stringify(myArray))
    console.log(localStorage.getItem("articles"));
  } else {
    //Initialized 'articles' in localStorage.
    localStorage.setItem("articles", "[]");
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...