iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 27
1
Modern Web

JS 學習歷程系列 第 27

我存進去了,我又取出來了! - localStorage 基本使用 (三)

昨天我們發現了 localStorage 會直接把新資料覆蓋掉的狀況之後,我們今天要來彈彈如何處理這個狀況:

基本上我們可以有二個做法:

  1. 直接將 key 值另外取名:

以昨天紀錄左、右鄰居太太為例,我們可以分別存取不同的 key 值:

localStorage.setItem('left_wifeName', "Happy");

localStorage.setItem('right_wifeName', "Happy2");

https://ithelp.ithome.com.tw/upload/images/20190928/20119922m5RfFzyX7F.png

  1. 用陣列及物件來存取:

let data = [
    { 'left_wifeName': 'Happy', },
    { 'right_wifeName': 'Happy2' },
];

localStorage.setItem('wife', data);

但是 Application 卻出現了醬的狀態:
https://ithelp.ithome.com.tw/upload/images/20190928/20119922hPfcvdEDTI.png

因為 localStorage 只會保存 String 資料,所以如果我們要將陣列及物件的東西存入,我們需要使用JSON.stringify

  1. 利用 JSON.stringify 來存入陣列及物件:

所以上方程式碼將改寫成:

let data = [
    { 'left_wifeName': 'Happy', },
    { 'right_wifeName': 'Happy2' },
];
localStorage.setItem('wife', JSON.stringify(data)); //改寫這行

瞧瞧 Application 的狀態,是不是很健康呢:
https://ithelp.ithome.com.tw/upload/images/20190928/20119922mmoD6oUYcO.png

  1. 利用陣列及物件來存取的好處當然就是可以分門別類儲存很多資料:

我今天還想來存個左邊鄰居家小孩名稱,我們再來行程式碼:

let data = [
    { 'left_wifeName': 'Happy', },
    { 'right_wifeName': 'Happy2' },
];

data[0].left_childName = 'Tom'; // 加入這行程式碼

localStorage.setItem('wife', JSON.stringify(data));

Application 有把值一併存入吔,好開心:
https://ithelp.ithome.com.tw/upload/images/20190928/20119922bCs0kaF2gZ.png

  1. 以上就是 localStorage 的存取方式玩法介紹溜,明天我們來試試把值取出來。

上一篇
我存進去了,我又取出來了! - localStorage 基本使用 (二)
下一篇
我存進去了,我又取出來了! - localStorage 基本使用 (四)
系列文
JS 學習歷程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言