如何将值推送到本地存储?
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", "[]");
【讨论】:
以上是关于如何将值推送到本地存储?的主要内容,如果未能解决你的问题,请参考以下文章
如何按键过滤数组并使用javascript将值推送到另一个数组