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

Как я могу подсчитать, сколько разных значений у меня есть в 1 ключе localstorage.

Например:

Это мое локальное хранилище:

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

Для этого примера мне нужно предупреждение о двух разных значениях. Итак, в основном я хочу посчитать {}..

Это возможно?


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


Ответы (3)


localStorage — это объект, поэтому просто localStorage.length дает вам количество записей.

Однако я думаю, что могу неправильно вас понять. Вы имеете в виду, что у вас есть один ключ, и значение этого ключа является объектом JSON.stringify? Если это так, вы можете сделать 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