私の目標: ループで以前に使用されたアイテムを削除することにより、localstorage をクリーンアップしfor
ます。
通常、次のようにいくつかのアイテムがあります。
order-1356666288243 => {"cartID":2713329701836,"productName"...
order-1356666288243 => {"cartID":2713329701836,"productName"...
全体でいくつのアイテムがあるかを確認すると、正しいゼロベースの金額が得られます。
console.log( localStorage.length );
for loop
キーと値、およびその他のいくつかを書き出すためにa を実行してconsole.log()
も、すべて問題ありません。
for(var i=0, len=localStorage.length; i<=len; i++) {
var key = localStorage.key(i);
var value = localStorage[key];
console.log(key + " => " + value);
if(key != '' && key != null){
console.log( key.indexOf('order-') );
console.log(i + '. Key: ', key);
if(key.indexOf('order-') != -1){
console.log('The key to be removed is: ', key.toString());
localStorage.removeItem(key.toString());
}
}
console.log(i + ': ' + len);
}
すべてがほとんど期待どおりに機能します。ただし、この行は、スクリプトを実行したときに 1回だけ実行されます。
localStorage.removeItem(key);
また
localStorage.removeItem(key.toString());
実際、アイテムの数だけスクリプト全体を実行する必要があります。したがって、たとえば 3 つのアイテムがある場合、ループを 3 回実行して各アイテムを削除する必要があります。
私は困惑しています: どこで間違ったのですか? すべてのconsole.log()
ものは3回表示されます(3つのアイテムがあり、for loop
1回実行した場合)。絶望から に変更i < len
しましたがi >= len
、それでも問題は解決しません。
誰?