我在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'));
}
答案 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", "[]");
}
}