|
Удаление элементов массива | ☑ | ||
---|---|---|---|---|
0
pro3ri
25.05.15
✎
11:47
|
Доброго дня!
Удаляю элементы массива М, причем все четные добавленные элементы: Процедура Сделать(Команда) М=Новый Массив; Удаляем = Новый Массив; Для Сч = 1 по 10 Цикл М.Добавить(Сч*100); КонецЦикла; Для Сч = 1 По М.Количество() Цикл Если Сч%2 = 0 Тогда Удаляем.Добавить(Сч -1); КонецЕсли; КонецЦикла; Для Сч = 1 по Удаляем.Количество() Цикл НахождениеМаксЗн = Удаляем[Удаляем.Количество()-1]; М.Удалить(НахождениеМаксЗн); Удаляем.Удалить(Удаляем.Количество()-1); КонецЦикла; КонецПроцедуры по моему это можно сделать проще, не? |
|||
1
cw014
25.05.15
✎
11:51
|
????
|
|||
2
cw014
25.05.15
✎
11:51
|
А нельзя с конца пробежаться по массиву и удалить все, что %2???
|
|||
3
ДенисЧ
25.05.15
✎
11:52
|
А просто добавить нужные элементы в новый массив?
|
|||
4
cw014
25.05.15
✎
11:53
|
(3) +1
|
|||
5
ЧеловекДуши
25.05.15
✎
11:54
|
(0) Ужас, иди с конца.
Либо при удалении не двигай счетчик вперед. "Код из разряда ГУАНО.", перепиши :) ...при удалении элемента массива, все следующие по порядку, как бы сдвигаются... |
|||
6
Goggy
25.05.15
✎
11:54
|
(3) Да как ты посмел такое предложить? Надо оперативу экономить. Кризис в стране как никак...
|
|||
7
ЧеловекДуши
25.05.15
✎
11:55
|
(6) В какой стране? В России нормально. :)
|
|||
8
pro3ri
25.05.15
✎
12:07
|
так заработало:
М=Новый Массив; Для Сч = 1 по 10 Цикл М.Добавить(Сч*100); КонецЦикла; А = 0; Для Сч = 1 По М.Количество() Цикл Если Сч%2 = 0 Тогда А = 1+А; М.Удалить(М.Количество()-1-А); КонецЕсли; КонецЦикла; |
|||
9
pro3ri
25.05.15
✎
12:08
|
есть более красивый вариант?
|
|||
10
Asmody
25.05.15
✎
12:14
|
(9) Слушай (3) или купи гуся
|
|||
11
D_E_S_131
25.05.15
✎
12:16
|
(9) Последнее время все чаще появляются такие вопросы. Может ВР-у создать раздел "Для эстетов"?
|
|||
12
fisher
25.05.15
✎
12:17
|
Уже предлагали более красивые варианты.
Самый простой и эффективный - в (3). Если таки нужен обход с конца, я типа такого пишу: Для ОтрицательныйИндекс = -М.Количество + 1 По 0 Цикл а = М[-ОтрицательныйИндекс]; КонецЦикла; |
|||
13
Timon1405
25.05.15
✎
12:17
|
(0)
Всего = М.ВГраница(); Для Сч = -Всего По 0 Цикл Если Сч%2=-1 Тогда М.Удалить(-Сч) КонецЕсли; КонецЦикла; |
|||
14
pro3ri
25.05.15
✎
12:27
|
спасибо!
|
|||
15
Asmody
25.05.15
✎
12:37
|
на 3 минуты делов:
? &НаКлиенте Процедура Команда1(Команда) Массив = МассивСлучайных(20); Сообщить("Исходный"); СообщитьМассив(Массив); Четные = МассивФильтровать(Массив, "Четное"); Сообщить("Четные"); СообщитьМассив(Четные); Нечетные = МассивФильтровать(Массив, "Нечетное"); Сообщить("Нечетные"); СообщитьМассив(Нечетные); КонецПроцедуры &НаКлиенте Процедура СообщитьМассив(Знач Масс) Для Каждого зз из Масс Цикл Сообщить(зз); КонецЦикла; КонецПроцедуры &НаКлиенте Функция МассивСлучайных(Сколько=10) _гсч=Новый ГенераторСлучайныхЧисел; _м=Новый Массив(); Для ии=1 по Сколько Цикл _м.Добавить(_гсч.СлучайноеЧисло(0,100)); КонецЦикла; Возврат _м; КонецФункции &НаКлиенте Функция МассивФильтровать(Знач Исходный, Знач ФильтрФ) _м = Новый Массив; Для Каждого зз Из Исходный Цикл Если Вычислить(ФильтрФ + "(зз)") Тогда _м.Добавить(зз); КонецЕсли; КонецЦикла; Возврат _м; КонецФункции &НаКлиенте Функция Четное(к) Возврат 0 = к % 2; КонецФункции &НаКлиенте Функция Нечетное(к) Возврат 1 = к % 2; КонецФункции |
|||
16
D_E_S_131
25.05.15
✎
12:39
|
(15) Вот она истинная красота!
|
|||
17
fisher
25.05.15
✎
12:40
|
Подчеркивания глаза режут. В чем их смысл?
|
|||
18
1Сергей
25.05.15
✎
12:41
|
(15) (17) у Асмодея мозги не под 1С заточены. Инфа 100%
|
|||
19
fisher
25.05.15
✎
12:42
|
И насчет "Знач" и Вычислить() - я бы не стал.
|
|||
20
fisher
25.05.15
✎
12:49
|
(18) Как в том анекдоте, чтобы руку не сбивать? :)
|
|||
21
Asmody
25.05.15
✎
12:50
|
(19) В чем проблема со Знач?
А Вычислить() — ну нельзя в 1С саму функцию передать, приходится выворачиваться. А это хоть и кривой, но самый быстрый и понятный способ реализации. |
|||
22
D_E_S_131
25.05.15
✎
13:44
|
(17) Еще один эстет?
|
|||
23
fisher
25.05.15
✎
14:32
|
(21) Стрёмно коллекции по Знач передавать. Ну а Вычислить() - это такая вундервафля, которую лучше без крайней необходимости не использовать.
(22) Да. В человеке всё должно быть прекрасно - погоны, кокарда, исподнее. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |