2013-11-11 2 views
2

хранить объекты в локальном хранилище следующим:объекты Append в локальном хранилище

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

Я хочу добавить несколько экземпляров из OBJ каждую секунду, давая ключ времени. Как я могу добавлять obj вместо того, чтобы менять его каждый раз?

ответ

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

+2

Как я могу проверить полно? В основном, отслеживание, когда памяти недостаточно для хранения другого объекта и для начала переноса первых объектов. –

1

В основном вам необходимо восстановить объект, добавить свое значение, а затем записать его обратно в localStorage.

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

Да, именно то, что я хочу. Благодаря!! –

+0

Это красиво и лаконично, но я думаю, что первая часть должна быть 'var obj = JSON.parse (localStorage.getItem ('obj')) || {}; 'сначала получить существующий элемент из localStorage. –

3

Есть два варианта:

  1. Вместо того, чтобы сохранять объект хранения списка/карта объектов, а затем добавить элемент только первым сделать то getItem, а затем нажмите/установить новый элемент, а затем использовать setItem ,
  2. Сохраните объекты с использованием даты в качестве ключа (например, localStorage.setItem('obj:' + x.time, x)) и используйте for (x in localStorage) {...}, чтобы найти все ключи.
+0

На большом наборе данных это звучит как лучший вариант. – Emissary

3
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)) 
} 
Смежные вопросы