有沒有一種方法可以通過基於關鍵字的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