Javascript 只有按照上次添加的顺序删除localStorage.removeItem()时,它才起作用。为什么?

Javascript 只有按照上次添加的顺序删除localStorage.removeItem()时,它才起作用。为什么?,javascript,arrays,json,reactjs,local-storage,Javascript,Arrays,Json,Reactjs,Local Storage,下面是它正在做的事情的视频: 您会看到,只有当我从最后添加的项目中删除时,它才会在25秒左右工作 例如,如果我按此顺序添加: 恐怖电影1 恐怖电影2 恐怖电影3 恐怖电影4 仅当我按以下顺序单击删除时才删除:4,3,2,1 如果我按此顺序单击1、4、5、6,它只会混淆本地存储中的项目顺序,而不会删除 //从本地存储中获取项目并在页面上呈现** useffect(()=>{ 让arrayOfValues=Object.values(localStorage); log(“localstoragea

下面是它正在做的事情的视频:

您会看到,只有当我从最后添加的项目中删除时,它才会在25秒左右工作

例如,如果我按此顺序添加:

  • 恐怖电影1
  • 恐怖电影2
  • 恐怖电影3
  • 恐怖电影4
  • 仅当我按以下顺序单击删除时才删除:4,3,2,1

    如果我按此顺序单击1、4、5、6,它只会混淆本地存储中的项目顺序,而不会删除

    //从本地存储中获取项目并在页面上呈现**
    useffect(()=>{
    让arrayOfValues=Object.values(localStorage);
    log(“localstoragearray:”,arrayOfValues);
    如果(arrayOfValues.length>0){
    arrayOfValues.forEach((电影)=>{
    让storedMovies=JSON.parse(电影);
    提名。推送(仓储式汽车);
    提名(提名);
    setNominatedCount(nominatedCount+指定的.length);
    });
    }
    }, []);
    //从本地存储中删除指定的电影和**
    常量删除=(电影)=>{
    localStorage.removietem(movie.imdbID);
    指定接头(
    提名.findIndex((电影)=>movie.title),
    1.
    );
    提名(提名);
    setNominatedCount(nominatedCount-1);
    };
    将电影添加到本地存储//将电影添加到本地存储
    useffect(()=>{
    提名。forEach((电影)=>{
    如果(指定长度>5){
    返回;
    }
    setItem(movie.imdbID,JSON.stringify(movie));
    });
    控制台日志(“指定:”,指定);
    },[提名];
    
    {removeNomination(电影);}>
    去除
    
    请创建一个类似于codesandbox的
    让arrayOfValues=Object.values(localStorage)
    这一行应该做什么?似乎代码已经发布了两次,因为
    removeNomination
    被声明为
    const
    两次,这将引发语法错误。很抱歉,我在尝试发布代码时出错。我更新了它。让arrayofvalues从本地存储中获取值您正在对
    指定的
    数组进行适当的变异。您应该将其视为不可变的: