如何使用键删除多个sesstionStorage值?

时间:2018-04-11 07:28:29

标签: javascript session-storage

我想使用key / s删除多个sessionStorage值,一种方法是我可以逐个删除它sessionStorage.removeItem('key1')& sessionStorage.removeItem('key2')等等。 那么我是否可以删除多个值,例如easy sessionStorage.removeItem('key1', 'key2')sessionStorage.removeItem(['key1', 'key2'])

3 个答案:

答案 0 :(得分:2)

您只能一次删除一项(MDN linkspec link)。 (当然,您可以使用键列表和任何循环结构。)

您可以将项目存储为单个键下的数组(存储时使用JSON.stringify,加载时使用JSON.parse),然后可以删除整个数组(或将其替换为空数组) )在一次手术中。

答案 1 :(得分:0)

没有这样的方法,但是你还可以做其他事情。

您可以存储具有多个属性的对象,而不是存储单个项目,然后当您删除一个属性时,您将删除其所有属性。

答案 2 :(得分:0)

如果您想要实现的目标是使用您自己的实现覆盖removeItem sessionStorage函数。

以下示例将向您展示如何使用您自己的实现包装removeItem,该实现在内部调用原始removeItem函数。

function wrap(object, method, wrapper) {
    var fn = object[method];
    return object[method] = function() {
        return wrapper.apply(this, [fn.bind(this)].concat(
            Array.prototype.slice.call(arguments)));
    };
};

wrap(sessionStorage, "removeItem", function(orginalFn) {
    var originalParams = Array.prototype.slice.call(arguments, 1);       
    for (var i = 0; i < originalParams[0].length; i++) {
        console.log('Removing Item- > ', originalParams[0][i])
        orginalFn.apply(null, [originalParams[0][i]]);
    }
});

sessionStorage.setItem("item1", "Item1 value");
sessionStorage.setItem("item2", "Item2 value");
sessionStorage.setItem("item3", "Item3 value");
sessionStorage.setItem("item4", "Item4 value");
//Call you custom removeItem method to remove both the key together.
sessionStorage.removeItem(["item1", "item2"]);

Demo Plunk