![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Цитата:
Вывод, в данном случае будет быстрее и проще сначала обработать строку регуляркой, а уже потом собрать из нее правильный массив. Хотя по поводу скорости регулярных выражений тоже утверждать не могу. Так же инфа из книжек (конкретно из Дж. Фриддла - Регулярные выражения). Но если кому интересно, можете провести тест скорости |
|
|||||
|
Modus ponens
|
Вы и мертвого из могилы подымите
![]() function isEmpty(value:Object):Boolean { return !value; } function deleteIf(array:Array, predicate:Function):Array { var i:int; for (var j:int; j < array.length; j++) { array[i] = array[j]; if (!predicate(array[j])) i++; } array.length = i; return array; } function removeIf(array:Array, predicate:Function):Array { var result:Array = []; for each (var element:Object in array) if (!predicate(element)) result.push(element); return result; } removeIf([1, 0, 2, false, undefined, null, 3], isEmpty); // [1, 2, 3] deleteIf([1, 0, 2, false, undefined, null, 3], isEmpty); // [1, 2, 3] Так и тут, проще решить проблему для общего случая: "удалить какие-то эелементы массива", а для конкретного: "удалить пустые эелементы" нам останется всего-навсего реализовать предикат распределяющий объекты на "те, которые надо удалять" и те, которые "не надо удалять". Другой аспект этой проблемы: это очень важно, нужно ли создавать копию переданых данных, или нет. В практике более взрослых языков, это обычно отражается в названии функции (например, добавлением !), или в описании типа данных (изменяемые / не изменяемые). Но и в АС3, несмотря на то, что об этом редко задумываются, это, тем не менее, важно. Алгоритмы удаления эелементов из массива были обсосаны сотни раз в любой книжке для начинающих, выше - тривиальная реализация, без потуг и претензий.
__________________
Hell is the possibility of sanity Последний раз редактировалось wvxvw; 11.05.2015 в 02:47. |
|
|||||
|
Я бы записал так, а фильтр, конечно же, потом унес бы в какой-то хелпер и юзал бы.
__________________
местонахождение |
|
|||||
|
Все циклично. Начинали с таких вопросов, потом были сложнее, а затем размышляли об превосходном уровне абстракции при построении multi-tier архитектур.
Теперь вновь пришли к тому, что на три страницы обсуждаем как подчистить пустые элементы в массиве. Огонь.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
@caseyryan, ну так отфильтровать пустые строки, я к тому, что на это все есть .filter
__________________
местонахождение |
|
|||||
|
Регистрация: Feb 2015
Сообщений: 63
|
Зашел за названием книжки по регулярным выражениям, которую упоминал caseyryan) Смотрю топик стал очень информативным)
PS В итоге использовал код, который любезно предоставил udaaff, на работу алгоритма жалоб нет. |
|
|||||
|
Modus ponens
|
Цитата:
1. Плохой интерфейс (зачем-то нужно, чтобы предикат обязательно принимал индекс и весь массив). Это приводит к тому, что ради фильтра нужно писать специальные функции с заведомо ненужными аргументами (так же, как в 99% случаев с обработчиками событий) - плохо спроектировали. 2. Фильтр обязательно возвращает новый массив, что в некоторых случаях неприемлимо не только из соображений производительности но и по смыслу. 3. Фильтр нельзя расширить до обработки N массивов (обязательно нужен один, т.как зачем-то его сделали методом объекта, при чем не чего-нибудь, а массива или вектора). Опять же, плохое проектирование. Я не думаю, что при такой стандартной библиотеке зазорно самому писать такие функции. Все шансы за то, что свой велик будет лучше стандартного решения.
__________________
Hell is the possibility of sanity |
![]() |
![]() |
Часовой пояс GMT +4, время: 02:22. |
|
|
« Предыдущая тема | Следующая тема » |
|
|