กำลังล้าง localStorage ใน javascript หรือไม่


คำตอบ:


1371

ใช้สิ่งนี้เพื่อล้าง localStorage:

localStorage.clear();

6
@BakedInhalf ไม่ได้เลย บางทีแอปของคุณอาจตั้งค่าใหม่อีกครั้ง?
destan

5
ฉันโทรหา localStorage.clear () เมื่อแอปเริ่มทำงาน แต่แม้ว่าฉันจะปิดเบราว์เซอร์ล้างแคช ฯลฯ ข้อมูลก็ยังอยู่ที่นั่น ฉันรู้สิ่งนี้เพราะฉันได้ตั้งค่าคุณสมบัติ "อินสแตนซ์" ในแบบจำลองของฉันเป็นหมายเลขสุ่มเมื่อเริ่มต้นและสำหรับ ID ที่กำหนดคุณสมบัติของอินสแตนซ์จะเหมือนกันเสมอ
sydneyos

11
@ digital-plane นี่จะล้างที่จัดเก็บในตัวเครื่องจากโดเมนเฉพาะหรือที่เก็บข้อมูลทั้งหมดหรือไม่
crisron

18
clear()จะลบคีย์ localStorage และค่าทั้งหมดออกจากโดเมนเฉพาะที่คุณเปิด Javascript ไม่สามารถรับค่า localStorage จากโดเมนอื่นใดเนื่องจาก CORS
Fizzix

1
@BakedInhalf ถูกต้องมันจะคงอยู่จนกว่าคุณจะรีเฟรชหน้าเว็บอย่างหนัก เมื่อคุณล้าง localStorage ของคุณและกรอกข้อมูลในภายหลังมันจะคืนค่าเนื้อหาก่อนหน้าและเพิ่มรายการใหม่ให้คุณ เมื่อคุณล้าง localStorage ของคุณและทำการ hardrefresh มันว่างเปล่าและคุณสามารถเริ่มเติมได้อีกครั้ง
Cyber

198

หากคุณต้องการลบรายการหรือตัวแปรเฉพาะออกจากที่เก็บข้อมูลในเครื่องของผู้ใช้คุณสามารถใช้

localStorage.removeItem("name of localStorage variable you want to remove");

1
สวัสดี @Ajeet หากฉันไม่ต้องการลบรายการใดรายการหนึ่งมีวิธีการเช่นกันหรือไม่ ตัวอย่างเช่น 'removeItemNotIn (คีย์)', 'ลบทั้งหมดยกเว้นคีย์ที่กำหนด'? ขอบคุณล่วงหน้า.
Me_developer

สวัสดี @Shadow หากฉันไม่ต้องการลบรายการใดรายการหนึ่งมีวิธีการเช่นกันหรือไม่ ตัวอย่างเช่น 'removeItemNotIn (คีย์)', 'ลบทั้งหมดยกเว้นคีย์ที่กำหนด'? ขอบคุณล่วงหน้า.
Me_developer

ฉันหาวิธีแก้ปัญหาของฉัน: - ถ้า (localStorage.getItem (specificKey) == null) {localStorage.clear (); } แต่ถ้าคุณมีทางออกที่ดีกว่าก็แจ้งให้เราทราบ ขอบคุณ
Me_developer

1
@learner คุณต้องการลบคีย์ทั้งหมดยกเว้นคีย์เฉพาะใช่ไหม เพื่อให้คุณสามารถทำสิ่งนี้ var key; for (var i = 0; i < localStorage.length; i++) { key = localStorage.key(i); if(key != particularKey){ localStorage.removeItem(key); } }
Ajeet Lakhani

1
เป็นไปได้อีกด้วย: รับค่าล้างและตั้งค่าอีกครั้งอเนกประสงค์มากขึ้น let tmp = localStorage.getItem('<your-name>'); localStorage.clear(); localStorage.setItem('<your-name>')
Michael B.


11

นี่คือฟังก์ชั่นที่จะช่วยให้คุณลบรายการ localStorage ทั้งหมดที่มีข้อยกเว้น คุณจะต้องjQueryสำหรับฟังก์ชั่นนี้ คุณสามารถดาวน์โหลดเค้า

คุณสามารถโทรแบบนี้ได้

let clearStorageExcept = function(exceptions) {
  let keys = [];
  exceptions = [].concat(exceptions); // prevent undefined

  // get storage keys
  $.each(localStorage, (key) => {
    keys.push(key);
  });

  // loop through keys
  for (let i = 0; i < keys.length; i++) {
    let key = keys[i];
    let deleteItem = true;

    // check if key excluded
    for (let j = 0; j < exceptions.length; j++) {
      let exception = exceptions[j];
      if (key == exception) {
        deleteItem = false;
      }
    }

    // delete key
    if (deleteItem) {
      localStorage.removeItem(key);
    }
  }
};

1
สิ่งประหลาดคือundefinedกุญแจสำคัญที่ถูกต้องสำหรับsetItemและgetItem
ebob

@ebob ใช่มันอาจดูแปลก แต่ไม่จริงมันไม่ใช่ ฟังก์ชั่น localStorage ในลักษณะคล้ายกับวัตถุในที่ที่คีย์จะถูกแปลงเป็นสตริง ตัวอย่างเช่นการใช้ undefined เป็นกุญแจเช่นนี้: localStorage.setItem(undefined, 'example Txt!')จะดำเนินการจัดเก็บไว้ภายใต้คีย์'undefined'ที่คุณเห็นเมื่อคุณเรียกใช้รหัสต่อไปนี้ ออกจะconsole.log(localStorage.getItem('undefined')) example Txt!
Jack Giffin

8

LocalStorage windowจะแนบอยู่ทั่วโลก เมื่อเราล็อกโลคัลสตอเรจใน Chrome devtools เราจะเห็นว่ามันมี API ดังต่อไปนี้:

ป้อนคำอธิบายรูปภาพที่นี่

เราสามารถใช้ API ต่อไปนี้สำหรับการลบรายการ:

  1. localStorage.clear(): ล้างการจัดเก็บในพื้นที่ทั้งหมด
  2. localStorage.removeItem('myItem'): เพื่อลบแต่ละรายการ

4

ก่อนอื่นคุณต้องตรวจสอบเพื่อให้แน่ใจว่า localStorage เปิดใช้งานอยู่ ฉันอยากจะแนะนำให้ทำเช่นนี้:

var localStorageEnabled = false;
try { localStorageEnabled = !!localStorage; } catch(e) {};

ใช่คุณสามารถ (ในบางกรณี) เพียงตรวจสอบเพื่อดูว่า localStorage เป็นสมาชิกของวัตถุหน้าต่าง อย่างไรก็ตามมีตัวเลือก sandboxing iframe (เหนือสิ่งอื่นใด) ที่จะทำให้เกิดข้อยกเว้นหากคุณพยายามเข้าถึงดัชนี 'localStorage' ดังนั้นเพื่อเหตุผลที่ดีที่สุดนี่เป็นวิธีที่ดีที่สุดในการตรวจสอบเพื่อดูว่า localStorage เปิดใช้งานอยู่หรือไม่ จากนั้นคุณสามารถล้าง localStorage อย่างนั้นได้

if (localStorageEnabled) localStorage.clear();

ตัวอย่างเช่นคุณสามารถล้าง localStorage หลังจากเกิดข้อผิดพลาดในเบราว์เซอร์ webkit เช่นนั้น

// clears the local storage upon error
if (localStorageEnabled)
  window.onerror = localStorage.clear.bind(localStorage);

ในตัวอย่างข้างต้นคุณต้องการ.bind(window)เพราะถ้าไม่มีlocalStorage.clearฟังก์ชันจะทำงานในบริบทของwindowวัตถุแทนlocalStorageวัตถุทำให้มันล้มเหลวอย่างเงียบ ๆ เพื่อแสดงสิ่งนี้ให้ดูตัวอย่างด้านล่าง:

window.onerror = localStorage.clear;

เหมือนกับ:

window.onerror = function(){
    localStorage.clear.call(window);
}

3

หากคุณต้องการล้างรายการทั้งหมดที่คุณเก็บไว้ในlocalStorageแล้ว

localStorage.clear();

ใช้สิ่งนี้เพื่อล้างคีย์ที่เก็บไว้ทั้งหมด

หากคุณต้องการที่จะล้าง / ลบเพียงสำคัญโดยเฉพาะ / ค่าแล้วคุณสามารถใช้RemoveItem (กุญแจ)

localStorage.removeItem('yourKey');

2
localStorage.clear();

หรือ

window.localStorage.clear();

เพื่อล้างรายการเฉพาะ

window.localStorage.removeItem("item_name");

หากต้องการลบค่าเฉพาะตาม ID:

var item_detail = JSON.parse(localStorage.getItem("key_name")) || [];           
            $.each(item_detail, function(index, obj){
                if (key_id == data('key')) {
                    item_detail.splice(index,1);
                    localStorage["key_name"] = JSON.stringify(item_detail);
                    return false;
                }
            });


0

นี่คือรหัสง่ายๆที่จะล้างการจัดเก็บในเบราว์เซอร์ของคุณโดยใช้จาวาสคริปต์

    <script type="text/javascript">

if(localStorage) { // Check if the localStorage object exists

    localStorage.clear()  //clears the localstorage

} else {

    alert("Sorry, no local storage."); //an alert if localstorage is non-existing
}

</script>

ในการยืนยันว่า localstorage ว่างเปล่าให้ใช้รหัสนี้:

<script type="text/javascript">

// Check if the localStorage object exists
if(localStorage) {

    alert("Am still here, " + localStorage.getItem("your object name")); //put the object name
} else {
    alert("Sorry, i've been deleted ."); //an alert
}

</script>

ถ้ามันคืนค่า null การจัดเก็บในพื้นที่ของคุณจะถูกล้าง


0

รหัสนี้ที่นี่คุณให้รายการของสตริงของคีย์ที่คุณไม่ต้องการลบจากนั้นมันจะกรองเหล่านั้นจากคีย์ทั้งหมดในการจัดเก็บในท้องถิ่นแล้วลบอื่น ๆ

const allKeys = Object.keys(localStorage);

const toBeDeleted = allKeys.filter(value => {
  return !this.doNotDeleteList.includes(value);
});

toBeDeleted.forEach(value => {
  localStorage.removeItem(value);
});
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.