Localstorage: Пребройте колко стойности в ключа, когато използвате stringify

Как мога да преброя колко различни стойности имам в 1 ключ за локално съхранение.

Например:

Това е моето локално хранилище:

[{"id":"item-1","icon":"google.com"},{"id":"item-2","icon":"youtube.com"}]

За този пример бих искал предупреждение за 2 различни стойности. Така че основно искам да преброя {}..

Това възможно ли е?


person jQuerybeast    schedule 11.11.2011    source източник


Отговори (3)


localStorage е обект, така че само localStorage.length ви дава броя на записите.

Въпреки това мисля, че може да ви разбера погрешно. Искате да кажете, че имате един ключ и стойността на този ключ е JSON.stringifyd обект? Ако е така, можете да направите JSON.parse(localStorage.keyname).length, за да десериализирате стойността и да преброите колко има там.

person Niet the Dark Absol    schedule 11.11.2011
comment
По принцип имам 1 ключ, който ще има много стойности, както е показано по-горе. По моя въпрос ключът има 2 стойности. - person jQuerybeast; 11.11.2011
comment
Това е, което търся: JSON.parse(localStorage.result).length Благодаря! - person jQuerybeast; 11.11.2011

Вашият обект се записва като масив, така че само използването на .length трябва да ви даде броя {} двойки, които имате. Опитайте това (заменете „каквото и да е“ с името на вашия масив:

var something = localstorage.whatever[];
var length = something.length;
alert("length = " + length);
person Kevin Anthony Oppegaard Rose    schedule 11.11.2011

Това ще върне броя на елементите в ключа за вас

testing = JSON.parse(localStorage.getItem(KEYNAMEHERE));

//Lets count how many we have back
obj = eval('(' + testing + ')');

//And the total is...
objCount=0;
for(_obj in obj) objCount++;

alert(objCount)
person Graeme Leighfield    schedule 11.11.2011
comment
Ако сте изпълнили JSON.parse, не е необходимо да изпълнявате и eval. Също така, това ще преброи прототипни елементи на масив като самата дължина и всички нейни методи. - person Niet the Dark Absol; 11.11.2011