我想使用key / s删除多个sessionStorage值,一种方法是我可以逐个删除它sessionStorage.removeItem('key1')
& sessionStorage.removeItem('key2')
等等。
那么我是否可以删除多个值,例如easy sessionStorage.removeItem('key1', 'key2')
或sessionStorage.removeItem(['key1', 'key2'])
答案 0 :(得分:2)
您只能一次删除一项(MDN link,spec 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"]);