【问题标题】:How do I removeItem() from localStorage?如何从 localStorage 中删除项目()?
【发布时间】:2020-08-14 23:49:09
【问题描述】:
您好,我是 JavaScript 新手,我正在尝试编写购物车代码。
我在 “productsInCart” 键下的购物车中有 3 个产品。我只希望删除单击删除按钮的行的产品,但是当我按下删除按钮时,购物车中的所有 3 个项目都会被删除。有什么解决办法吗?我猜是
localStorage.removeItem("productsInCart") 应该更改为删除特定项目,但我不知道该怎么做。
我添加了item.inCart = 0;,以便我可以更新localStorage 以显示购物车中正确的商品总数(cartNumbers) 和totalCost。这再次将所有 3 个产品更改为 0“inCart”,而不是用户想要的特定产品。
【问题讨论】:
标签:
javascript
json
local-storage
shopping-cart
【解决方案1】:
根据我从您的问题中得到的信息:
你需要有一个项目的集合,也许是一个 JS 数组,比如:
const items = [{}, {}, {}];
这个数组的长度也会给你项目的数量,所以你不必显式地维护它。
你需要在localStorage中设置这个数组为:
localStorage.setItem('itemList', JSON.stringify(items));
当您单击删除时,您需要从列表中删除该项目。了解从数组中删除元素的方法(pop、splice、slice 等)
items.splice(index, 1);
之后您需要在本地存储中重新设置更新的项目。
在这里阅读更多:https://www.w3schools.com/jsref/jsref_splice.asp
【解决方案2】:
您应该从数组中删除您想要在 JavaScript 代码中使用的项目(例如,使用 splice 命令),然后在您的 localStorage 中更新 removeItem 数组,而不是删除它。
因此,由于您只能将数据以文本格式存储在 localStorage 中,因此您需要在进行任何更新时来回解析它(所以JSON.stringify & JSON.parse)
【解决方案3】:
您不能直接修改 localStorage 数据。您应该替换数据。
您可以做的是,当您删除一个项目时,获取数组中的项目索引,然后读取 localStorage 数据,从数组中删除该项目,然后再次将数据保存到 localStorage。
var existingItems = JSON.JSON.parse(localStorage.getItem('cartItems'))
var itemIndex = 1 // index of item to be removed
existingItems.splice(itemIndex, 1)
localStorage.setItem('cartItems', JSON.stringify(existingItems));