В настоящее время я сохраняю кучу объектов (тысяч) в chrome .storage.local, а затем, когда на определенной веб-странице c проверяю, действительно ли указанные c идентификаторы на веб-странице действительно сохранены в локальной хранилище.
Вот псевдокод
Сценарий Bakcground:
var storage = chrome.storage.local;
var json = '[{"kek1": {"aaa": "aaaValue", "bbb": "bbbValue", "ccc": "cccValue"}},{"kek2": {"ddd": "dddValue", "eee": "eeeValue", "fff": "fffValue"}}]';
var jsonParsed = JSON.parse(json);
jsonParsed.forEach(function(object) {
storage.set(object);
});
Сценарий содержимого (при указании на c странице):
ids.forEach(function(id) {
storage.get(id, function(result){
if(!isEmpty(result)) {
//we found it, nice, now flag it as found
}
});
});
function isEmpty(obj) {
for(var key in obj) {
if(obj.hasOwnProperty(key))
return false;
}
return true;
}
Это просто и приятно, поскольку мне нужно только сделать storage.get(id, ...
К сожалению, я сохраняю много вещей в хранилище, некоторые из них мне нужно периодически удалять, что затем становится суматохой, так как я должен провести l oop через все объекты и определить, должен ли этот конкретный объект быть удален или он должен остаться.
Поэтому я решил, что я бы сделал так, как эти "родительские объекты" , Ie один объект для настроек, содержащий массив объектов с разными настройками, которые пользователь может сохранить. Один объект для материала, который нужно удалить, содержащий массив объектов. Et c
Примерно так - вся необходимая информация, которую я хочу периодически удалять, будет находиться под одним ключом «test» (временное имя):
var json = '{"test":[{"kek1": {"aaa": "aaaValue", "bbb": "bbbValue", "ccc": "cccValue"}},{"kek2": {"ddd": "dddValue", "eee": "eeeValue", "fff": "fffValue"}}]}';
Я знаю, как получить доступ к вложенные объекты и их значения:
var jsonParsed = JSON.parse(json);
jsonParsed.test[0].kek1.aaa
Но я не знаю, как бы я легко проверил ключи, сохраненные в хранилище, поскольку мне пришлось бы указывать «номер элемента» ([i]).
Должен ли я просто сделать a для l oop итерации по массиву, как это?
for (i = 0; i < jsonParsed.test.length; i++) {
var getKey = Object.keys(jsonParsed.test[i]);
if (getKey[0] == 'theKeyImLookingFor') {
//do stuff
}
}
Мне кажется, что это не идеальное решение, так как для l oop придется запустить для каждого из идентификаторов на странице, и иногда может быть около 4000 из них. (4000 для циклов спина к спине)
Это хорошая идея, чтобы сохранить один объект, содержащий массив из тысяч других объектов?
Я делаю это неправильно или это способ go