![]() |
![]() |
![]() |
|
Функция Удалить Повторяющиеся Элементы Массива и Пустые строки | ☑ | ||
---|---|---|---|---|
0
Tcibah
15.04.13
✎
11:58
|
Функция УдалитьПовторяющиесяЭлементыМассива(Массив) Экспорт
ВсегоЭлементов = Массив.Количество(); ТекущийИндекс = 0; Пока ТекущийИндекс < ВсегоЭлементов Цикл Индекс2 = ТекущийИндекс + 1; Пока Индекс2 < ВсегоЭлементов Цикл Если Массив[Индекс2] = "" Тогда //сравниваем каждый следующий и если он "" то удаляем Массив.Удалить(Индекс2); ВсегоЭлементов = ВсегоЭлементов - 1; ИначеЕсли Массив[ТекущийИндекс] = "" Тогда //удаляем 1ый пустой Массив.Удалить(ТекущийИндекс); ВсегоЭлементов = ВсегоЭлементов - 1; Иначе Индекс2 = Индекс2 + 1; КонецЕсли; КонецЦикла; ТекущийИндекс = ТекущийИндекс + 1; КонецЦикла; ТекущийИндекс = 0; Пока ТекущийИндекс < ВсегоЭлементов Цикл Индекс2 = ТекущийИндекс + 1; Пока Индекс2 < ВсегоЭлементов Цикл Если Массив[Индекс2] = Массив[ТекущийИндекс] Тогда Массив.Удалить(Индекс2); ВсегоЭлементов = ВсегоЭлементов - 1; Иначе Индекс2 = Индекс2 + 1; КонецЕсли; КонецЦикла; ТекущийИндекс = ТекущийИндекс + 1; КонецЦикла; Возврат Массив; КонецФункции Мой код удаляет первый элемент и все последующие.кроме последнего В значении "ТекущийИндекс" содержиться количество всех элементов массива. Если Массив[ТекущийИндекс] = "" Тогда Массив.Удалить(ТекущийИндекс); ВсегоЭлементов = ВсегоЭлементов - 1; Иначе Индекс2 = Индекс2 + 1; КонецЕсли; Но ругается что индекс за пределами.Проверку делал вне цикла. в конце кода |
|||
1
Maxus43
15.04.13
✎
11:59
|
классика же, удаляя элементы надо двигаться с конца массива, а не с начала
|
|||
2
Maxus43
15.04.13
✎
12:01
|
>>Мой код удаляет первый элемент и все последующие.кроме последнего
А не легче просто последний вытащить? зачем удалять остальные? |
|||
3
vicof
15.04.13
✎
12:05
|
+(2) Зачем вообще получать кучу элементов, чтобы потом их удалять?
|
|||
4
Tcibah
15.04.13
✎
13:00
|
Я получаю кучу элементов и вывожу их в макет, грубо говоря их 31, как дней
Некоторые записи повторяются. С 5 по 9 например значение 1-1 а с 12-16 значение 2-2 и чтобы он не выводит 5 раз 1-1 или 4 раза 2-2 я удаляю дублёры)но этот пример которые я брал за основу иногда косячи и добавляет пустой элемент спереди или сзади массива. |
|||
5
Tcibah
15.04.13
✎
13:10
|
(2)
">>Мой код удаляет первый элемент и все последующие.кроме последнего А не легче просто последний вытащить? зачем удалять остальные? " Потому что первый и те_что_между_элементами я удалил уже. |
|||
6
Tcibah
16.04.13
✎
10:33
|
Решение проблемы:
Добавил условие на элемент массива Если Массив[н] <> Неопределено Тогда |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |