Если я правильно понимаю ваш вопрос, вы хотите кэшировать несколько AJAX-полученных элементов?
Итак, если все элементы выглядят так, скажем:
{ id: 1, value: 'Test' }
... и вы не хотите AJAX-извлекать значение для ID = 1, если вы уже сделали это один раз ...?
В этом случае объявите переменную кэша где-нибудь в глобальной области видимости:
var ajaxCache = {};
В случае успеха вашей функции извлечения, добавьте к ней:
ajaxCache['item' + item.id] = item;
Когда вы это сделаете, вы можете изменить свою функцию извлечения следующим образом:
if(('item' + id) in ajaxCache) {
return ajaxCache['item' + id];
}
// continue to fetch 'id' as it didn't exist
Следует отметить, что на самом деле это не массив. Причина, по которой я не использовал массив, заключается в том, что назначение элемента с идентификатором 2000 даст массиву длину 2001 года, а не просто добавит к нему свойство. Таким образом, независимо от того, как вы подходите к этому, итерация от 0 до array.length
никогда не будет хорошим способом получения всех элементов (что является единственным сценарием, в котором разница между массивом и объектом будет иметь значение, в данном конкретном контексте).
Вместо этого для итерации этого объекта вам нужно написать
for(var key in ajaxCache) {
var item = ajaxCache[key];
// whatever you want to do with 'item'
}
Да, и для удаления объекта:
delete ajaxCache['item' + id];