首页  >  问答  >  正文

javascript - 用localstorage删除某个key下的某条数据

查到的似乎都是用removeItem 然后删除key 想问下有没有更加细致的方法可以删除某个key下的某条数据
举例

如图 假如我想把这个contrastdata里面的a1709这条数据删除 应该怎么写?

大家讲道理大家讲道理2664 天前1325

全部回复(6)我来回复

  • 我想大声告诉你

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

    由于localStorage里存的其实都是字符串,所以,你看到的这个实际上是数组contrastdata经过JSON.stringify然后写入到localStorage里去的结果。

    由于原生的localStorage只处理键值对的增删改查,所以要处理contrastdataa1709这项,只能将contrastdata数组化,然后,删掉a1709这项后再转成字符串替换掉,代码如下:

    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
  • 取消回复