如果存在LocalStorage变量,则搜索Javascript

时间:2016-01-23 15:40:06

标签: javascript

我正在编写聊天系统。打开新聊天时,我总是创建一个Localstorage变量。像这样创建:

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

现在我想检查一下我有多少这样的东西: "聊天_" + ...计数。 我怎么能这样做?

4 个答案:

答案 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