首页 > 解决方案 > 我想从本地存储中删除特定对象

问题描述

通常有一个函数 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。我该怎么办?

标签: javascriptarraysjsonobjectlocal-storage

解决方案


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

请记住,这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;
    }
}

推荐阅读