javascript - 我想从本地存储中删除特定对象
问题描述
通常有一个函数 localstorage.remove(key)。但我想删除键中的索引。我正在这样保存对象:
cart[idstr] = [qty, name];
localStorage.setItem('cart', JSON.stringify(cart));
我想删除一个特定的cart[idstr]
Sampleconsole.log(cart)
给出:
{pr22: Array(2), pr19: Array(2), pr21: Array(2)}
假设我想删除 pr19。我该怎么办?
解决方案
您需要反序列化、修改并重新保存该项目。
请记住,这localStorage
是一个简单的键/值存储strings
:它不提供任何方式来操作这些存储字符串的内容(您甚至不需要存储 JSON,您可以存储 YAML、XML 或 Base64 编码的任意二进制数据在localStorage
.
像这样:
function storeCart( cart ) {
localStorage.setItem( 'cart', JSON.stringify( cart ) );
}
/** Returns 'true' if the specified key/value was removed from the stored cart object - otherwise 'false'. */
function deleteItemFromStoredCart( key ) {
const cartString = localStorage.getItem( 'cart' );
if( !cartString ) return false;
try {
const cart = JSON.parse( cartString );
if( !( key in cart ) ) return false;
delete cart[ key ];
storeCart( cart );
return true;
}
catch( err ) {
console.log( "Error: ", err );
return false;
}
}
推荐阅读
- html - html元内容中问号的含义
- amazon-web-services - 如何在私有存储桶 s3 amazon 中获取对象的 url(未预先签名)
- python - 如何使用自定义断点函数而不必返回调用断点的地方
- java - 将 rest 客户端请求转换为 java httpclient 之一
- c++ - Xcode 中的动态数组大小
- javascript - 使用 useEffect 挂钩获取数据时,React 组件不会在 URL 参数更改时重新渲染
- php - Laravel - SQLSTATE [22007]:无效的日期时间格式:1292 不正确的日期时间值:'1616818311712'
- javascript - 在 Dino 游戏结束前处理游戏动画
- c# - 如何在不同类之间共享变量值?
- javascript - Css 按钮中的动画