В порядке. поэтому я работаю над приложением, которое извлекает элементы из базы данных и создает галерею. Я делал это много раз, и это должно быть просто.
У меня проблемы, потому что в этой галерее я получаю результаты из базы данных, которая включает как файлы изображений, так и другие файлы. Скажем так, я не могу ничего изменить, кроме вспышки, поэтому мне нужно определить, является ли это изображением, и отобразить его только в том случае, если это так.
Мой вопрос: как, черт возьми, я могу удалить свойство из объекта без того, чтобы объект оставался того же размера? Я использую функцию count() для генерации данных разбивки на страницы, поэтому я не могу просто «обнулить» их, и, насколько я понимаю, delete() тоже не вариант.
Мое решение для этого состояло в том, чтобы просто создать еще один объект, отфильтровать хорошие элементы с помощью цикла for in, а затем вставить их в другой объект, но каждый элемент в объекте является объектом, и у меня нет функции push() для объектов.
Итак, в отчаянии я использую приращение для добавления объектов к новому объекту с помощью индекса (goodItemsObject[index] = allItemsObject[object]), но это кажется действительно ужасным способом обойти эту проблему.
Вот код:
var filteredMO = new Object();
var newFile = 0;
for each(var file in mediaObject){
if(check_file(file)){
filteredMO[newFile] = file;
newFile++;
}
}
mediaObject = filteredMO;
check_file() просто возвращает true или false, mediaObject заполнен объектами.
Я бы предпочел сделать это:
for each(var file in mediaObject){
if(check_file(file)){
//remove_from_object_for_reals(mediaObject[file]);
}
}
Я понимаю, что это может быть невозможно (выбросит ли это цикл for?), но что-то подобное было бы мило. Я бы хотел, чтобы gc мог захватить все эти бесполезные предметы, болтающиеся вокруг.
Любые идеи?
Благодарность,
Джесси