我尝试了很多来自堆栈溢出的问题解决方案,但我仍然无法解决这个问题,我不知道我在哪里出错了,因为我是JavaScript编码的新手。
以下是代码:
function SaveFavMovie(id)
{
let movies = moviesData.movies;
let movieid = -1;
for (let i = 0; i < movies.length; i++) {
if (movies[i].id === id) {
movieid = id;
}
}
if(!movieid) return;
var a = [];
a = JSON.parse(localStorage.getItem('moviedb'));
a.push(id);
localStorage.setItem('moviedb', JSON.stringify(a));
return true;
以下是从上面的代码中得到的错误
Uncaught TypeError: a.push is not a function
at Object.SaveFavMovie
这是显示错误的行
a.push(tmp);
网上商店&#39; moviedb&#39;是空的,并试图第一次推送数据。
答案 0 :(得分:4)
a = JSON.parse(localStorage.getItem('moviedb'));
如果localStorage中尚未存在该条目,则它无法解析任何内容,因此会将其设置为null
。那不是阵列。因此,在尚未存储的情况下,您可能需要采用数组:
JSON.parse(localStorage.getItem('moviedb')) || [];