如何将值推送到本地存储?

时间:2019-05-28 02:52:52

标签: javascript php arrays json local-storage

我在js中有以下代码。如果我使用静态数组,一切正常。否则我得到:

  

未捕获的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 个答案:

答案 0 :(得分:4)

由于要对其进行字符串化,因此需要使用字符串格式将其解析为使用push

var myArray = JSON.parse(localStorage.getItem("articles"));

答案 1 :(得分:0)

添加检查“ articles”是否存在于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", "[]");
  }
}