【问题标题】:Append objects in local storage在本地存储中追加对象
【发布时间】:2016-12-22 13:52:45
【问题描述】:

我使用以下内容将对象存储在本地存储中:

 localStorage.setItem('obj', JSON.stringify(obj));

我想每秒添加多个 obj 实例,并给出一个时间键。如何附加 obj 而不是每次都更改它?

【问题讨论】:

    标签: javascript local-storage


    【解决方案1】:
    var oldItems = JSON.parse(localStorage.getItem('itemsArray')) || [];
    
    var newItem = 
    {
     'product-name': itemContainer.find('h2.product-name a').text(),
     'product-image': itemContainer.find('div.product-image img').attr('src'),
     'product-price': itemContainer.find('span.product-price').text()
    };
    
     oldItems.push(newItem);
    
     localStorage.setItem('itemsArray', JSON.stringify(oldItems));
    

    您可能还想考虑使用对象而不是数组,并使用产品名称作为键。这将防止重复条目出现在 LocalStorage 中。

    【讨论】:

    • 如何检查是否已满?基本上,跟踪何时没有足够的内存来存储另一个对象并开始移动第一个对象。
    • Uncaught TypeError: oldItems.push is not a function @JoseRamon 我收到此错误
    【解决方案2】:

    基本上,您必须检索对象,添加您的值,然后将其写回localStorage

    var obj = JSON.parse( localStorage.getItem('obj') ) || {};
    obj[ timestamp ] = 'newvalue';
    localStorage.setItem('obj', JSON.stringify(obj));
    

    【讨论】:

    • 是的,正是我想要的。谢谢!!
    • 这很好,简洁,但我认为第一部分应该是var obj = JSON.parse( localStorage.getItem('obj') ) || {};,首先从localStorage获取现有项目。
    【解决方案3】:

    有两种选择:

    1. 而不是存储对象存储对象的列表/映射,然后添加一个元素只需先执行getItem,然后推送/设置新元素,然后使用setItem
    2. 使用日期作为键存储对象(例如localStorage.setItem('obj:' + x.time, x))并使用for (x in localStorage) {...} 查找所有键。

    【讨论】:

    • 在更大的数据集上,这听起来是更好的选择。
    【解决方案4】:
    function store() 
    {
        var person=new Object();
    str = [str stringByReplacingOccurrencesOfString:@" " withString:@"%20"];
        person.firstname="John";
        person.lastname="Doe";
        person.age=50;
        person.eyecolor="blue";
        localStorage.setObj("temp", person);
        var obj=localStorage.getObj("temp");
        for(var i in obj)
        alert(i+"--"+obj[i]);
    }
    Storage.prototype.setObj = function(key, obj) {
         return this.setItem(key, JSON.stringify(obj))
    }
    Storage.prototype.getObj = function(key) {
         return JSON.parse(this.getItem(key))
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-21
      • 2021-07-18
      • 1970-01-01
      • 2012-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多