有没有一种方法可以通过基于关键字的javascript或JQuery中的localStorage进行循环,而不是循环遍历所有localStorage?我知道我可以做通过localStorage循环包含关键字
for (var i = 0; i < localStorage.length; i++)...
但我宁愿做这样的事情
$.each('localStorage:contains("keyword")')...
有没有一种方法可以通过基于关键字的javascript或JQuery中的localStorage进行循环,而不是循环遍历所有localStorage?我知道我可以做通过localStorage循环包含关键字
for (var i = 0; i < localStorage.length; i++)...
但我宁愿做这样的事情
$.each('localStorage:contains("keyword")')...
这不是直接可以使用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) {
// ...
});
这个技巧。很长的路要走,以避免一个For循环。 :) 非常感谢! – jmease
jQuery有一个InArray()方法,我想这就是你要找的 -
在你的情况下,你可能需要这样的东西...
var index = jQuery.inArray(“keyword”,localStorage);
//你从需要使用localStorage的[指数]什么这里
你的意思是关键或值应该包含“关键字”? – pimvdb
关键字应该包含在密钥中。 – jmease
我想我对这个[问题] [1]的回答可能是你要找的。 [1]:http://stackoverflow.com/q/8265078/1054225 – Dallas