亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如果尚未在 localStorage 中,如何將新對象推送到數組

如果尚未在 localStorage 中,如何將新對象推送到數組

桃花長相依 2022-06-16 16:47:12
我正在嘗試實現一個簡單的“添加到收藏夾”功能,但不能完全讓事情在本地存儲中工作。我可以將對象/數組推送到本地存儲并取回它,但是當我單擊下一個項目以“添加到收藏夾”時,我最終會覆蓋前一個而不是向數組添加新對象。下面的代碼: const push1 = async (movieId, movieName, image) => {    const stringId = JSON.stringify(movieId);    const stringName = JSON.stringify(movieName);    const stringImage = JSON.stringify(image);    // our array    let moviesList = [];    // our object    let movies = {      movieId: stringId,      movieName: stringName,      image: stringImage    };    moviesList.push(movies);    // storing our array as a string    localStorage.setItem("movieList", JSON.stringify(moviesList));    let updatedMoviesList = [];    const retrievedMovies = localStorage.getItem("movieList");    const parseRetrievedMovies = JSON.parse(retrievedMovies);    console.log("retrievedMovies: ", retrievedMovies);    console.log("parseRetrievedMovies: ", parseRetrievedMovies);    parseRetrievedMovies.push(movies);};如果同一個對象不存在,我該如何更新數組?
查看完整描述

3 回答

?
手掌心

TA貢獻1942條經驗 獲得超3個贊

也許您可以Set()改用它來幫助您將獨特的電影存儲在localStorage.


嘗試如下:


const stringId = '12';

const stringName = 'Name';

const stringImage = '<img-url>';


const moviesList = new Set();


const movie = {

  movieId: stringId,

  movieName: stringName,

  image: stringImage

};


moviesList.add(JSON.stringify(movie));

console.log('first attempt', JSON.parse(Array.from(moviesList)));


moviesList.add(JSON.stringify(movie));

console.log('second attempt', JSON.parse(Array.from(moviesList)));


查看完整回答
反對 回復 2022-06-16
?
慕森王

TA貢獻1777條經驗 獲得超3個贊

您的功能沒有讀取舊設置。相反,您從一個新的空數組開始:

let moviesList = [];

在這里,您可以改為加載上次保存的數據,如下所示:

let moviesList = localStorage.getItem("movieList");

然后通過添加新電影來修改它,然后保存,就像你已經在做的那樣。

希望這可以幫助。


查看完整回答
反對 回復 2022-06-16
?
慕桂英3389331

TA貢獻2036條經驗 獲得超8個贊

檢查對象是否已經在檢索電影中array.some,并且只有在不存在時才推送它。


const retrievedMovies = localStorage.getItem("movieList");

if(retrievedMovies) {

   const parseRetrievedMovies = JSON.parse(retrievedMovies);

   console.log("retrievedMovies: ", retrievedMovies);

   console.log("parseRetrievedMovies: ", parseRetrievedMovies);

   const movieExists = parseRetrievedMovies.some((m) => movies.movieId === m.movieId ))

   if(!movieExists) {

      parseRetrievedMovies.push(movies);

   }

}


查看完整回答
反對 回復 2022-06-16
  • 3 回答
  • 0 關注
  • 163 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號