سؤال

نعم.لذلك أنا أعمل على تطبيق يسترد العناصر من قاعدة البيانات ويبني معرضًا.لقد فعلت هذا كثيرًا من المرات، ويجب أن يكون الأمر بسيطًا.

أواجه مشكلات، لأنه في هذا المعرض، أحصل على نتائج من قاعدة بيانات تتضمن ملفات صور وملفات أخرى.لنفترض فقط أنني لا أستطيع تغيير أي شيء سوى الفلاش، لذلك أحتاج إلى اكتشاف ما إذا كانت صورة، وعرضها فقط إذا كانت كذلك.

سؤالي هو:كيف يمكنني حذف خاصية من كائن دون أن يبقى الكائن بنفس الحجم؟أستخدم دالة count() لإنشاء بيانات ترقيم الصفحات، لذلك لا يمكنني فقط "إفراغها"، وكما أفهمها، فإن الحذف() ليس خيارًا أيضًا.

كان الحل الذي توصلت إليه لهذا هو إنشاء كائن آخر، وتصفية العناصر الجيدة باستخدام حلقة for، ثم إدخالها في كائن آخر، ولكن كل عنصر في الكائن هو كائن، وليس لدي وظيفة 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() يُرجع فقط صواب أو خطأ، أما mediaObject فهو مليء بالكائنات.

أفضّل أن أفعل هذا كثيرًا:

for each(var file in mediaObject){
    if(check_file(file)){
         //remove_from_object_for_reals(mediaObject[file]);
    }
}

أدرك أن ذلك قد لا يكون ممكنًا (هل سيؤدي ذلك إلى التخلص من الحلقة؟)، ولكن شيئًا مشابهًا سيكون رائعًا.أود أن أكون قادرًا على السماح لـ gc بالاستيلاء على كل هذه الأشياء غير المفيدة المعلقة.

أيه أفكار؟

شكرًا،

جيسي

هل كانت مفيدة؟

المحلول

ما تستخدمه لتخزين الكائن الخاص بك الآن يسمى مصفوفة ترابطية.لا يمكنك إزالة قيمة مفتاح من مصفوفة اقترانية.ما تحتاجه هو قاموس (والذي يحتوي as3 على قاموس مدمج http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/utils/Dictionary.html).

import flash.utils.Dictionary;

var dict:Dictionary = new Dictionary();

ثم يمكنك إزالة المفتاح من القاموس الخاص بك عن طريق الاتصال

delete dict["myKey"]
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top