Warning: Table './mandrew182_base/sessions' is marked as crashed and should be repaired query: SELECT u.*, s.* FROM users u INNER JOIN sessions s ON u.uid = s.uid WHERE s.sid = 'c7b3e091d0e2abf5759ab923fac3c840' in /home/mandrew182/domains/mandrew182.org.ua/public_html/includes/database.mysql.inc on line 128

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/mandrew182/domains/mandrew182.org.ua/public_html/includes/database.mysql.inc:128) in /home/mandrew182/domains/mandrew182.org.ua/public_html/includes/bootstrap.inc on line 981

Warning: Cannot modify header information - headers already sent by (output started at /home/mandrew182/domains/mandrew182.org.ua/public_html/includes/database.mysql.inc:128) in /home/mandrew182/domains/mandrew182.org.ua/public_html/includes/bootstrap.inc on line 582

Warning: Cannot modify header information - headers already sent by (output started at /home/mandrew182/domains/mandrew182.org.ua/public_html/includes/database.mysql.inc:128) in /home/mandrew182/domains/mandrew182.org.ua/public_html/includes/bootstrap.inc on line 583

Warning: Cannot modify header information - headers already sent by (output started at /home/mandrew182/domains/mandrew182.org.ua/public_html/includes/database.mysql.inc:128) in /home/mandrew182/domains/mandrew182.org.ua/public_html/includes/bootstrap.inc on line 584

Warning: Cannot modify header information - headers already sent by (output started at /home/mandrew182/domains/mandrew182.org.ua/public_html/includes/database.mysql.inc:128) in /home/mandrew182/domains/mandrew182.org.ua/public_html/includes/bootstrap.inc on line 585
Як профільтрувати масив? | mandrew182.org.ua
 

Як профільтрувати масив?

17 Вер 2008
warning: Cannot modify header information - headers already sent by (output started at /home/mandrew182/domains/mandrew182.org.ua/public_html/includes/database.mysql.inc:128) in /home/mandrew182/domains/mandrew182.org.ua/public_html/includes/common.inc on line 141.
Питання на засипку: є масив, в якому розміщені об'єкти різних типів в тому числі кастомних. Як з масиву вийняти всі об'єкти якогось конкретного типу. Пропоную своє вирішення, якщо хтось знає як зробити простіше - напишіть, буду дуже вдячний.
  1. package helper
  2. {
  3. import flash.utils.describeType;
  4.  
  5. public class ArrayFiltering
  6. {
  7. /** @private className for filtering */
  8. private var _className:String;
  9.  
  10. public function ArrayFiltering()
  11. {
  12. _className = "";
  13. }
  14.  
  15. /**
  16. * This function will filter array accordingly to ClassName
  17. */
  18. public function filterArray(array:Array, arrayClassName:String):Object
  19. {
  20. _className = arrayClassName;
  21. var filteredArray:Array;
  22. filteredArray = array.filter(isType);
  23. return filteredArray;
  24. }
  25.  
  26. private function isType(element:*, index:int, arr:Array):Boolean
  27. {
  28. var descriptionXml: XML = describeType(element);
  29. var className: String = descriptionXml.@name;
  30. var flag:Boolean = false
  31. if (className == _className) flag = true;
  32. return flag;
  33. }
  34.  
  35. }
  36. }
це не дуже вигідно, оскільки кожного разу потрібно створювати новий instance.
  1. var arrayFiltering:ArrayFiltering = new ArrayFiltering();
  2. return arrayFiltering.filterArray(array, 'String');
Було б добре в isType передати параметр className, але як?

Завдяки Місяцю Івану кількість коду суттєво зменшилась:
  1. package helper
  2. {
  3. public class ArrayFiltering
  4. {
  5. /**
  6. * This function will filter array accordingly to arrayClass type
  7. */
  8. public static function filterArray(array:Array, arrayClass:Class):Object
  9. {
  10. var filteredArray : Array = new Array();
  11. for each ( var element : * in array )
  12. {
  13. if (element is arrayClass)
  14. {
  15. filteredArray.push(element);
  16. }
  17. }
  18. return filteredArray;
  19. }
  20. }
  21. }