Javascript 我想从localstorage中删除特定对象

Javascript 我想从localstorage中删除特定对象,javascript,arrays,json,object,local-storage,Javascript,Arrays,Json,Object,Local Storage,通常有一个函数localstorage.remove(key)。但是我想删除一个键中的索引。 我这样保存对象: cart[idstr] = [qty, name]; localStorage.setItem('cart', JSON.stringify(cart)); 我想删除特定的购物车[idstr] 示例console.log(购物车)给出: {pr22: Array(2), pr19: Array(2), pr21: Array(2)} 假设我想删除pr19。我该怎么办?您需要反序列

通常有一个函数localstorage.remove(key)。但是我想删除一个键中的索引。 我这样保存对象:

cart[idstr] = [qty, name];

localStorage.setItem('cart', JSON.stringify(cart));
我想删除特定的
购物车[idstr]
示例
console.log(购物车)
给出:

{pr22: Array(2), pr19: Array(2), pr21: Array(2)}

假设我想删除pr19。我该怎么办?

您需要反序列化、修改并重新保存该项目

请记住,
localStorage
是一个用于
字符串的简单键/值存储:它不提供任何方法来操作这些存储字符串的内容(您甚至不需要存储JSON,您可以在
localStorage
中存储YAML、XML或Base64编码的任意二进制数据)

像这样:

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;
    }
}

您需要反序列化、修改和重新保存该项

请记住,
localStorage
是一个用于
字符串的简单键/值存储:它不提供任何方法来操作这些存储字符串的内容(您甚至不需要存储JSON,您可以在
localStorage
中存储YAML、XML或Base64编码的任意二进制数据)

像这样:

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;
    }
}

尝试将购物车对象保存为临时变量,从本地存储中删除购物车,然后从临时存储中删除索引并将其重新添加到本地存储中。 即:


尝试将购物车对象保存为临时变量,从本地存储中删除购物车,然后从临时存储中删除索引并将其重新添加到本地存储中。 即:


我建议获取数据,删除对象,然后重置它

var cart = localStorage.getItem('cart');
cart = cart ? JSON.parse(cart) : {};
delete cart['pr19'];
localStorage.setItem('cart', JSON.stringify(cart));

我建议获取数据,删除对象,然后重置它

var cart = localStorage.getItem('cart');
cart = cart ? JSON.parse(cart) : {};
delete cart['pr19'];
localStorage.setItem('cart', JSON.stringify(cart));

直接做这件事是不可能的

    • 首先,您必须从存储器中获取已保存的项目
    • 删除此项目所需的属性
    • 更新存储中的项目

  • 直接做这件事是不可能的

    • 首先,您必须从存储器中获取已保存的项目
    • 删除此项目所需的属性
    • 更新存储中的项目
  • 试试这个

    delete localStorage.cart[idstr]
    
    试试这个

    delete localStorage.cart[idstr]
    

    对于localstorage中的设置值: 只有一个字段直接写入=>
    localStorage.setItem('id',2);
    对于对象直接写入=>
    localStorage.setItem('object',JSON.stringify(object));

    要从本地存储获取值,请执行以下操作: 只有一个字段直接写入=>
    localStorage.getItem('id');
    对于对象直接写入=>
    JSON.parse(localStorage.getItem(“对象”))


    对于localstorage中的移除值:=>
    localstorage.removietem('id');

    对于localstorage中的设置值: 只有一个字段直接写入=>
    localStorage.setItem('id',2);
    对于对象直接写入=>
    localStorage.setItem('object',JSON.stringify(object));

    要从本地存储获取值,请执行以下操作: 只有一个字段直接写入=>
    localStorage.getItem('id');
    对于对象直接写入=>
    JSON.parse(localStorage.getItem(“对象”))


    对于localstorage中的remove值:=>
    localstorage.removeItem('id'))

    这能回答您的问题吗?这能回答您的问题吗?如果
    localStorage
    中不存在
    temp
    ,则此代码将失败,并出现运行时
    错误
    ——调用
    localStorage.setItem
    也会失败,因为您传递的是
    对象,而不是
    字符串l如果
    localStorage
    中不存在
    temp
    ,则会出现运行时
    Error
    -对
    localStorage的调用也会失败。setItem
    将失败,因为您传递的是
    对象,而不是
    字符串
    。此代码根本不起作用:
    localStorage
    Storage
    类型的对象,而不是具有隐式属性(正如我在回答中解释的,
    localStorage
    仅存储
    string
    值,而不是
    object
    值,因此必须反序列化和重新序列化对象)。此代码根本不起作用:
    localStorage
    是类型为
    Storage
    的对象,它没有隐式属性(正如我在回答中所解释的,
    localStorage
    只存储
    string
    值,而不是
    object
    值,因此必须对对象进行反序列化和重新序列化)。