循环遍历包含关键字的localStorage

时间:2011-10-24 15:11:33

标签: javascript local-storage

有没有办法在javascript或JQuery中基于关键字循环遍历localStorage而不是循环遍历所有localStorage?我知道我可以做到

 for (var i = 0; i < localStorage.length; i++)...

但我宁愿做类似

的事情
 $.each('localStorage:contains("keyword")')...

2 个答案:

答案 0 :(得分:2)

不能直接将DOM选择器用于通用对象。

但是,您可以创建一个按照传递的函数进行过滤的小函数:

Object.filter = function(obj, func) {
    var res = {};

    for(var key in obj) {
        // filter out own properties (not length) that pass the filter function
        if(obj.hasOwnProperty(key) && key !== "length" && func(key, obj[key])) {
            res[key] = obj[key];
        }
    };

    return res;
};

然后你可以这样做:

var filtered = Object.filter(localStorage, function(i, v) {
                                               // Simply speaking, '~' is the
                                               // same as checking for '!== -1'
                                               return ~i.indexOf("keyword");
                                           });
$.each(filtered, function(i, v) {
    // ...
});

使用此通用功能,您可以构建其他便利功能,例如:

Object.keyContains = function(obj, contains) {
    return Object.filter(obj, function(i, v) {
        return ~i.indexOf(contains);
    });
};

然后按照您想要的方式迭代localStorage

$.each(Object.keyContains(localStorage, "keyword"), function(i, v) {
    // ...
});

答案 1 :(得分:0)

JQuery有一个inArray()方法,我认为这就是你要找的东西 -

JQuery inArray

在你的情况下,你可能需要这样的东西......

var index = jQuery.inArray(“keyword”,localStorage);

//从这里用localStorage [index]做你需要的东西