我正在編程一個聊天系統。打開新聊天時,我總是創建一個LocalStorage變量。創建這樣的:Javascript搜索,如果LocalStorage變量存在
localStorage.setItem("chat_"+varemail, data);
現在我想檢查我有多少人有這樣類似: 「聊天_」 + ...計數。 我該怎麼做?
我正在編程一個聊天系統。打開新聊天時,我總是創建一個LocalStorage變量。創建這樣的:Javascript搜索,如果LocalStorage變量存在
localStorage.setItem("chat_"+varemail, data);
現在我想檢查我有多少人有這樣類似: 「聊天_」 + ...計數。 我該怎麼做?
你會搶localStorage
對象的鍵陣列,並使用Array.filter唯一的項目開始與「chat_」搶:
var length = Object.keys(localStorage).filter(function(key) {
return /^chat_.+/.test(key);
}).length;
這裏有一個JSFiddle
嘗試這樣的事情,循環瀏覽localStorage
中的所有項目並與您的圖案匹配
function getChatCount(){
var chatCount = 0;
for(item in localStorage){
if(item.indexOf('chat_') > -1) chatCount++;
}
return chatCount;
}
本地存儲基於關鍵值對。 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.
雖然,這將意味着你必須添加時,手動保持計數變量或刪除數據。如果你不需要索引功能,你可以將聊天添加到數組並存儲。
編輯:有可能找到某個前綴的屬性,如在這個問題的答案中看到的。
我會提供轉換爲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
是否還有其他的'localStorage'?如果沒有,那麼只需檢查'.length'屬性 – Andreas