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

Posted

技术标签:

【中文标题】如何将值推送到本地存储?【英文标题】:How to push values to local storage? 【发布时间】:2019-10-13 12:32:04 【问题描述】:

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

未捕获的类型错误: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'));

【问题讨论】:

localStorage.getItem 将返回 JSON string 而不是 JSON Object。因此,您应该在推入数组之前对其进行解析。 【参考方案1】:

由于是字符串化,所以需要将其解析出字符串格式才能使用push

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

【讨论】:

【参考方案2】:

添加检查 localStorage 中是否存在“articles”以及它是否为数组。 如果它还不存在。为它初始化了一个值(“[]”); 在将项目推送到数组之前,您需要先解析 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", "[]");
  

【讨论】:

以上是关于如何将值推送到本地存储?的主要内容,如果未能解决你的问题,请参考以下文章

如何将值推送到 QML 属性变量二维数组 - 动态?

如何按键过滤数组并使用javascript将值推送到另一个数组

将值推送到猫鼬模式中对象内的数组

将值推送到辅助数组javascript

webview javascript将值推送到上一页不起作用

如果它是一个函数,则将值推送到 javascript 数组的问题