Xóa localStorage trong javascript?


Câu trả lời:


1371

Sử dụng điều này để xóa localStorage:

localStorage.clear();

6
@BakenInhalf hoàn toàn không. Có lẽ ứng dụng của bạn đặt nó một lần nữa?
Destan

5
Tôi gọi localStorage.clear () khi ứng dụng của tôi khởi động, nhưng ngay cả khi tôi đóng trình duyệt, xóa bộ nhớ cache, v.v., dữ liệu vẫn ở đó. Tôi biết điều này bởi vì tôi đã đặt một thuộc tính "cá thể" trên mô hình của mình thành một số ngẫu nhiên khi khởi tạo và, đối với một id đã cho, thuộc tính cá thể luôn giống nhau.
sydneyos

11
@ máy bay kỹ thuật số Điều này sẽ xóa bộ nhớ cục bộ khỏi một tên miền cụ thể hoặc tất cả bộ lưu trữ?
năm15

18
clear()sẽ xóa tất cả các khóa và giá trị localStorage khỏi tên miền cụ thể mà bạn đang sử dụng. Javascript không thể nhận các giá trị localStorage từ bất kỳ tên miền nào khác do CORS.
Fizzix

1
@BakenInhalf là đúng, nó sẽ tồn tại cho đến khi bạn chăm chỉ làm mới trang. Khi bạn xóa localStorage của bạn và điền nó ngay sau đó, nó sẽ khôi phục lại nội dung trước đó và thêm bạn mục mới vào đó. Khi bạn xóa localStorage của bạn và thực hiện hardrefresh, nó sẽ trống và bạn có thể bắt đầu điền lại.
Cyber

198

Nếu bạn muốn xóa một Mục hoặc biến cụ thể khỏi bộ nhớ cục bộ của người dùng, bạn có thể sử dụng

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

1
Xin chào, @Ajeet Nếu tôi không muốn xóa một mặt hàng cụ thể thì có cách nào để làm điều đó không? Ví dụ: 'removeItemNotIn (key)', 'remove all trừ một khóa được xác định'? Cảm ơn trước.
Me_developer

Xin chào, @Shadow Nếu tôi không muốn xóa một mục cụ thể thì có cách nào để làm điều đó không? Ví dụ: 'removeItemNotIn (key)', 'remove all trừ một khóa được xác định'? Cảm ơn trước.
Me_developer

Tôi đã tìm ra một giải pháp cho vấn đề của mình: - if (localStorage.getItem (ownKey) == null) {localStorage.clear (); } Nhưng nếu bạn có một giải pháp tốt hơn thì hãy cho tôi biết. Cảm ơn.
Me_developer

1
@learner Vậy bạn muốn xóa tất cả các khóa trừ một khóa cụ thể , phải không? Cho rằng bạn có thể làm một cái gì đó như thế này var key; for (var i = 0; i < localStorage.length; i++) { key = localStorage.key(i); if(key != particularKey){ localStorage.removeItem(key); } }
Ajeet Lakhani

1
Cũng có thể: nhận giá trị, xóa và thiết lập lại giá trị, linh hoạt hơn. let tmp = localStorage.getItem('<your-name>'); localStorage.clear(); localStorage.setItem('<your-name>')
Michael B.


11

Đây là một chức năng sẽ cho phép bạn loại bỏ tất cả các mục localStorage với các ngoại lệ. Bạn sẽ cần jQuery cho chức năng này. Bạn có thể tải xuống ý chính .

Bạn có thể gọi nó như thế này

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
Điều kỳ lạ là đó undefinedlà một khóa hợp lệ cho setItemgetItem
ebob

@ Kẻ có, nó có vẻ kỳ lạ, nhưng không, thực sự không phải vậy. Các hàm localStorage theo cách tương tự với các đối tượng trong đó các khóa được chuyển đổi thành chuỗi. Ví dụ: sử dụng không xác định làm khóa như thế này : localStorage.setItem(undefined, 'example Txt!'), sẽ lưu trữ nó dưới khóa được gọi 'undefined'như bạn có thể thấy khi bạn chạy mã sau đây. console.log(localStorage.getItem('undefined')) sẽ đầu ra example Txt!.
Jack Giffin

8

Localst Storage được gắn trên toàn cầu window. Khi chúng tôi đăng nhập lưu trữ cục bộ trong các devtools chrome, chúng tôi thấy rằng nó có các API sau:

nhập mô tả hình ảnh ở đây

Chúng tôi có thể sử dụng các API sau để xóa các mục:

  1. localStorage.clear(): Xóa toàn bộ lưu trữ cục bộ
  2. localStorage.removeItem('myItem'): Để xóa các mục riêng lẻ

4

Trước tiên, bạn cần kiểm tra để đảm bảo rằng localStorage được bật. Tôi khuyên bạn nên làm như thế này:

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

Có, bạn có thể (trong một số trường hợp) chỉ cần kiểm tra xem localStorage có phải là thành viên của đối tượng cửa sổ không. Tuy nhiên, có các tùy chọn hộp cát iframe (trong số những thứ khác) sẽ ném ngoại lệ nếu bạn thậm chí cố gắng truy cập vào chỉ mục 'localStorage'. Do đó, vì lý do thực hành tốt nhất, đây là cách tốt nhất để kiểm tra xem liệu LocalStorage có được bật hay không. Sau đó, bạn có thể xóa localStorage như vậy.

if (localStorageEnabled) localStorage.clear();

Ví dụ: bạn có thể xóa localStorage sau khi xảy ra lỗi trong trình duyệt webkit như vậy.

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

Trong ví dụ trên, bạn cần .bind(window)bởi vì không có nó, localStorage.clearhàm sẽ chạy trong ngữ cảnh của windowđối tượng, thay vì localStorageđối tượng làm cho nó âm thầm thất bại. Để chứng minh điều này, hãy xem ví dụ dưới đây:

window.onerror = localStorage.clear;

giống như:

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

3

Nếu bạn muốn xóa tất cả các mục bạn đã lưu trữ trong localStorage thì

localStorage.clear();

Sử dụng này để xóa tất cả các khóa được lưu trữ.

Nếu bạn muốn xóa / chỉ xóa khóa / giá trị cụ thể thì bạn có thể sử dụng removeItem (khóa) .

localStorage.removeItem('yourKey');

2
localStorage.clear();

hoặc là

window.localStorage.clear();

để xóa mục cụ thể

window.localStorage.removeItem("item_name");

Để xóa giá trị cụ thể theo 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

Đây là một mã đơn giản sẽ xóa lưu trữ cục bộ được lưu trữ trong trình duyệt của bạn bằng cách sử dụng javascript

    <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>

Để xác nhận xem localst Storage có trống không, hãy sử dụng mã này:

<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>

nếu nó trả về null thì lưu trữ cục bộ của bạn sẽ bị xóa.


0

Mã này ở đây bạn đưa ra một danh sách các chuỗi khóa mà bạn không muốn xóa, sau đó nó sẽ lọc chúng từ tất cả các khóa trong bộ nhớ cục bộ sau đó xóa các khóa khác.

const allKeys = Object.keys(localStorage);

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

toBeDeleted.forEach(value => {
  localStorage.removeItem(value);
});
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.