Javascript 如何仅删除在localStorage中多次出现的一个特定数据

Javascript 如何仅删除在localStorage中多次出现的一个特定数据,javascript,html,jquery,local-storage,Javascript,Html,Jquery,Local Storage,我通过将项目存储在具有ID的localStorage中,将其添加到购物车中 $(文档)。在('单击','上。设置购物车信息',函数(){ //我们检索存储在url中的产品id var url_id=window.location.search; var id=url_id.split(“?id=”).pop(); //我们从本地存储中检索数据 var cartimes=localStorage.getItem('teddy_id'); //如果没有数据,我们将创建一个数组 cartItems=

我通过将项目存储在具有ID的localStorage中,将其添加到购物车中

$(文档)。在('单击','上。设置购物车信息',函数(){
//我们检索存储在url中的产品id
var url_id=window.location.search;
var id=url_id.split(“?id=”).pop();
//我们从本地存储中检索数据
var cartimes=localStorage.getItem('teddy_id');
//如果没有数据,我们将创建一个数组
cartItems=cartItems?cartItems.split(','):[];
//将新数据添加到数组中
cartItems.push(id);
//我们将数据保存在本地存储器中
localStorage.setItem('teddy_id',cartItems.toString());

});您的问题在于,一旦存储了ID数组,在检索获取字符串json所需的数据时,它将以数组的形式存储,然后对其进行解析,然后运行所需的操作。检查此项。

始终记住数组方法是您的朋友。一种方法是将
array.prototype.find()
array.prototype.splice()
结合使用,如下所示:

cartItems.find((项目,i)=>{
如果(项==此\u id){
cartItems.拼接(i,1);
返回true;
}
返回false;
} );

这样,它只需删除它遇到的第一个匹配项。

您应该
JSON.stringify(newStorage)
而不是
.toString()
它,这样您就可以轻松地
JSON.parse()
将它返回到对象/数组中。看起来代码已经在处理它了。虽然它并没有使用JSON.parse(),但有一个三元运算符可以将字符串拆分为一个数据数组。为什么要使用这些呢??如果预先编写的方法可以很容易地为您/处理它,则不需要进行处理。另外,您的问题是如何处理本地存储中的数组,我在示例中对此做了很好的解释。我并不是说最好使用三元运算符。我只是说这不是问题的根源。不过,我同意使用JSON.parse和JSON.stringif会更好。我也从eg获得了这一点。我只是想简单地说,使用我的eg不需要在UI的数组中找到它,您已经获得了id,只需要在拼接中传递即可。你也可以用我的方式解决问题!