有没有办法在javascript或JQuery中基于关键字循环遍历localStorage而不是循环遍历所有localStorage?我知道我可以做到
for (var i = 0; i < localStorage.length; i++)...
但我宁愿做类似
的事情 $.each('localStorage:contains("keyword")')...
答案 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()方法,我认为这就是你要找的东西 -
在你的情况下,你可能需要这样的东西......
var index = jQuery.inArray(“keyword”,localStorage);
//从这里用localStorage [index]做你需要的东西