我正在编写聊天系统。打开新聊天时,我总是创建一个Localstorage变量。像这样创建:
localStorage.setItem("chat_"+varemail, data);
现在我想检查一下我有多少这样的东西: "聊天_" + ...计数。 我怎么能这样做?
答案 0 :(得分:1)
您将获取localStorage
对象的键数组,并使用Array.filter仅抓取以“chat _”开头的项目:
var length = Object.keys(localStorage).filter(function(key) {
return /^chat_.+/.test(key);
}).length;
这是JSFiddle
答案 1 :(得分:0)
尝试这样的事情,循环浏览localStorage
中的所有项目并与您的模式匹配
function getChatCount(){
var chatCount = 0;
for(item in localStorage){
if(item.indexOf('chat_') > -1) chatCount++;
}
return chatCount;
}
答案 2 :(得分: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.
虽然这意味着您必须在添加或删除数据时手动维护计数变量。如果您不需要索引功能,可以将聊天添加到数组并存储该数据。
编辑:可以找到具有特定前缀的属性,如此问题的答案中所示。
答案 3 :(得分: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