2016-01-23 3 views
0

Я программирую чат-систему. Я всегда делаю переменную Localstorage при открытии нового чата. Созданный как это:Поиск Javascript, если существует переменная LocalStorage

localStorage.setItem("chat_"+varemail, data); 

Теперь я хочу, чтобы проверить, сколько из них я так что-то вроде: «чат _» + ... сосчитать. Как я могу это сделать?

+0

Есть ли что-нибудь еще в 'localStorage'? Если нет, то просто проверьте свойство '.length' – Andreas

ответ

1

Вы бы захватить массив ключей localStorage объекта, и использовать Array.filter, чтобы захватить только те элементы, начиная с «chat_»:

var length = Object.keys(localStorage).filter(function(key) { 
    return /^chat_.+/.test(key); 
}).length; 

Вот JSFiddle

0

Попробуйте что-то вроде этого, цикл по всем пунктам в localStorage и матче против вашего шаблона

function getChatCount(){ 
    var chatCount = 0; 
    for(item in localStorage){ 
     if(item.indexOf('chat_') > -1) chatCount++; 
    } 
    return chatCount; 
} 
0

Локальное хранение основан на ключах, парах значений. AFAIK, вы не сможете получить все значения с определенным префиксом.

Одним из возможных решений было бы хранить объект, который содержит их. На основе ваших потребностей вы можете хранить объекты в массиве или объекте, а затем извлекать весь набор и находить счетчик.

Например:

var chats = { count: 0 }; 
chats["chat_"+varemail] = data; 
chats.count += 1; 

localStorage.setItem('chats', data); 

Тогда, если вы хотите, счетчик, вы бы извлекать объект:

var chats = localStorage.getItem('chats'); 
//chats.count would give you the count. 

Хотя, это будет означать, что вам нужно вручную сохранить переменную счетчика при добавлении или удаление данных. Если вам не нужна функция индексирования, вы можете добавить чаты в массив и сохранить это.

EDIT: можно найти свойства с определенным префиксом, как видно в ответе на этот вопрос.

0

Я бы предпочел конвертировать в localStorage.setItem("chat", JSON.stringify(stack)), где stack - это массив объектов чата. Таким образом, у вас есть доступ к массиву чатов, которые вы можете рассчитывать, поиск в и т.д.

Что-то вроде:

var chatStore = 
    { 
     Count: function() { 
      var stack = JSON.parse(localStorage.getItem("chats")); 
      if (!stack) 
       return 0; 
      return stack.length; 
     }, 
     Peek: function() { 
      var stack = JSON.parse(localStorage.getItem("chats")); 
      if (!stack) 
       stack = []; 
      if (stack.length > 0) 
       return stack.pop(); 
     }, 
     Push: function (token) { 
      var stack = JSON.parse(localStorage.getItem("chats")); 
      if (!stack) 
       stack = []; 
      stack.push(token); 
      localStorage.setItem("chats", JSON.stringify(stack)); 
     }, 
     // more methods to you might wish to implement: search, insert, etc. 
    } 

// usage: 
chatStore.Push(chatObject); // sets the last chat 
chatStore.Peek(); // gets the last chat 
Смежные вопросы