Javascript推送localStorage项目

时间:2018-04-18 19:40:00

标签: javascript reactjs

我尝试了很多来自堆栈溢出的问题解决方案,但我仍然无法解决这个问题,我不知道我在哪里出错了,因为我是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;是空的,并试图第一次推送数据。

1 个答案:

答案 0 :(得分:4)

 a = JSON.parse(localStorage.getItem('moviedb'));

如果localStorage中尚未存在该条目,则它无法解析任何内容,因此会将其设置为null。那不是阵列。因此,在尚未存储的情况下,您可能需要采用数组:

 JSON.parse(localStorage.getItem('moviedb')) || [];