2016-01-23 71 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. 

雖然,這將意味着你必須添加時,手動保持計數變量或刪除數據。如果你不需要索引功能,你可以將聊天添加到數組並存儲。

編輯:有可能找到某個前綴的屬性,如在這個問題的答案中看到的。

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