首頁  >  問答  >  主體

javascript - 用localstorage刪除某個key下的某條數據

查到的似乎都是用removeItem 然後刪除key 想問下有沒有更細緻的方法可以刪除某個key下的某條資料
舉例

#如圖 假如我想把這個contrastdata裡面的a1709這條資料刪除 該怎麼寫?

大家讲道理大家讲道理2665 天前1328

全部回覆(6)我來回復

  • 我想大声告诉你

    我想大声告诉你2017-07-03 11:43:49

    由於localStorage裡存的其實都是字串,所以,你看到的這個其實是數組contrastdata經過JSON.stringify然後寫入到localStorage裡去的結果。

    由於原生的localStorage只處理鍵值對的增刪改查,所以要處理contrastdataa1709這項,只能將contrastdata數組化,然後,刪除轉成字串替換掉,程式碼如下:

    var contrastdata = JSON.parse(localStorage.getItem('contrastdata')); // 数组化后的值
    delete contrastdata['a1709']; // 删除a1709项
    localStorage.setItem(JSON.stringify(contrastdata)); // 将删除a1709项后的contrastdata字符串化写回localStorage

    回覆
    0
  • 我想大声告诉你

    我想大声告诉你2017-07-03 11:43:49

    最簡單粗暴的

    const data = JSON.parse(localStorage.getItem('contractdata'));
    // ...
    localStorage.setItem('contractdata', JSON.stringify(data));

    回覆
    0
  • 滿天的星座

    滿天的星座2017-07-03 11:43:49

    原生只提供了基礎api 要自己封裝函數

    回覆
    0
  • 巴扎黑

    巴扎黑2017-07-03 11:43:49

    在這裡 刪除某個key換個想法就是重新setItem一個新的contractdata去替換掉

    回覆
    0
  • 世界只因有你

    世界只因有你2017-07-03 11:43:49

    1. 提取contrastdata字串str

    2. 轉換為物件obj

    3. 從物件中提取a1709所在的鍵值對,並刪除

    4. 設定新的contrastdata

    let str = localStorage.getItem('contrastdata');
    let obj = JSON.parse(str);
    delete obj.instrumentIDdate
    localStorage.setItem('contrastdata', JSON.stringify(obj))

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-07-03 11:43:49

    我覺得你要移除某個東西,首先這個東西必須要有唯一的標識,然後在資料裡面找到這個標識所對應的一個資料集,然後刪掉這個資料集就行了,對於localstorage, 我最常用的就是把物件push到某個數組,然後把數組字串化,然後存入localstorage,取出來的時候可以再把字串物件化。然後根據唯一標識刪掉數組中的某個資料。

    回覆
    0
  • 取消回覆