1С: Массивы и коллекции. Массивы

1С: Массивы и коллекции. Массивы

Оглавление (нажмите, чтобы раскрыть)

Динамические массивы

Количество = 15;
Числа = Новый Массив(Количество);
Числа[0] = 1;

Добавление и удаление элементов

Числа = Новый Массив(3);
Числа[0] = 2;
Числа[1] = 5;
Числа[2] = 7;
Числа.Добавить(11);
//Числа = [2, 5, 7, 11]

Числа.Вставить(1, 3);
//Числа = [2, 3, 5, 7, 11]

Числа.Удалить(2);
//Числа = [2, 3, 7, 11]

Числа.Очистить();
//Числа = []

Инициализация массивов

//пустой массив
Массив1 = Новый Массив;

//одномерный массив
Массив2 = Новый Массив(3);
Массив2[0] = 2;
Массив2[1] = 3;
Массив2[2] = 1;

//двумерный массив
Массив3 = Новый Массив(2);
Массив3[0] = Новый Массив(2);
Массив3[1] = Новый Массив(2);
Массив3[0][1] = 5;

Копирование массива

Числа1 = Новый Массив(3);
Числа1[0] = 1;
Числа1[1] = 2;
Числа1[2] = 3;

//первый вариант
Числа2 = Новый Массив(
    Новый ФиксированныйМассив(Числа1));

//второй вариант
Список = Новый СписокЗначений;
Список.ЗагрузитьЗначения(Числа1);
Числа3 = Список.ВыгрузитьЗначения();

Обход массива

Числа = Новый Массив(3);
Числа[0] = 2;
Числа[1] = 3;
Числа[2] = 5;

Стр = "";
Для Каждого Число из Числа Цикл
    Стр = Стр + ?(Стр = "", "", "; ") + Число;
КонецЦикла;
//Стр = "2; 3; 5"

Обход массива с индексом

Числа = Новый Массив(3);
Числа[0] = 2;
Числа[1] = 3;
Числа[2] = 5;

Стр = "";
Для Н = 0 По Числа.Количество() - 1 Цикл
    Стр = Стр + ?(Стр = "", "", "; ") + Числа[Н];
КонецЦикла;
//Стр = "2; 3; 5"

Объединение массивов

Числа1 = Новый Массив(3);
Числа1[0] = 2;
Числа1[1] = 3;
Числа1[2] = 5;

Числа2 = Новый Массив(3);
Числа2[0] = 7;
Числа2[1] = 11;
Числа2[2] = 13;

//вариант первый
ВсеЧисла = Новый Массив;
Для Каждого Число Из Числа1 Цикл
    ВсеЧисла.Добавить(Число);
КонецЦикла;

Для Каждого Число Из Числа2 Цикл
    ВсеЧисла.Добавить(Число);
КонецЦикла;
//ВсеЧисла = [2, 3, 5, 7, 11, 13]

//вариант второй
Список = Новый СписокЗначений;
Список.ЗагрузитьЗначения(Числа1);

Для Каждого Число Из Числа2 Цикл
    Список.Добавить(Число);
КонецЦикла;

ВсеЧисла = Список.ВыгрузитьЗначения();
//ВсеЧисла = [2, 3, 5, 7, 11, 13]

Получение уникальных значений

Числа1 = Новый Массив;
Числа1.Добавить(1);
Числа1.Добавить(3);
Числа1.Добавить(2);
Числа1.Добавить(1);
Числа1.Добавить(3);
//Числа1 = [1, 3, 2, 1, 3]

Числа2 = Новый Массив;

//первый вариант
Соответствие = Новый Соответствие;
Для каждого Число Из Числа1 Цикл
    Соответствие.Вставить(Число);
КонецЦикла;
Для каждого Элемент Из Соответствие Цикл
    Числа2.Добавить(Элемент.Ключ);
КонецЦикла;
//Числа2 = [1, 2, 3]

Числа2.Очистить();

//второй вариант
Для Каждого Число из Числа1 Цикл
    Если (Числа2.Найти(Число) = Неопределено) Тогда
        Числа2.Добавить(Число);
    КонецЕсли;
КонецЦикла;
//Числа2 = [1, 3, 2]

Преобразование массива

Числа = Новый Массив(3);
Числа[0] = 2;
Числа[1] = 3;
Числа[2] = 5;

Для Н = 0 По Числа.Количество() - 1 Цикл
    Числа[Н] = Числа[Н] * 3;
КонецЦикла;
//Числа = [6, 9, 15]

Проверка наличия элемента

Числа = Новый Массив(3);
Числа[0] = 2;
Числа[1] = 3;
Числа[2] = 5;

Содержит3 = Числа.Найти(3) <> Неопределено;
//Содержит3 = Истина

Индекс3 = Числа.Найти(3);
//Индекс3 = 1

Содержит4 = Числа.Найти(4) <> Неопределено;
//Содержит4 = Ложь

Проверка равенства массивов

Числа1 = Новый Массив(3);
Числа1[0] = 1;
Числа1[1] = 2;
Числа1[2] = 3;

Числа2 = Новый Массив(3);
Числа2[0] = 1;
Числа2[1] = 2;
Числа2[2] = 3;

//первый вариант
МассивыРавны = СравнитьМассивы1(Числа1, Числа2);
//МассивыРавны = Да

//второй вариант
МассивыРавны = СравнитьМассивы2(Числа1, Числа2);
//МассивыРавны = Да

Функция СравнитьМассивы1(Массив1, Массив2)
    Если Массив1.Количество() <> Массив2.Количество() Тогда
        Возврат Ложь;
    КонецЕсли;

    Для н = 0 По Массив1.Количество() - 1 Цикл
        Если (Массив1.Получить(н) <> Массив2.Получить(н)) Тогда
            Возврат Ложь;
        КонецЕсли;
    КонецЦикла;

    Возврат Истина;
КонецФункции

&НаСервере
Функция СравнитьМассивы2(Массив1, Массив2)
    Возврат ЗначениеВСтрокуВнутр(Массив1) =
        ЗначениеВСтрокуВнутр(Массив2);
КонецФункции

Сортировка элементов

Числа = Новый Массив(3);
Числа[0] = 2;
Числа[1] = 3;
Числа[2] = 1;

Список = Новый СписокЗначений;
Список.ЗагрузитьЗначения(Числа);

Список.СортироватьПоЗначению(НаправлениеСортировки.Возр) ;
Числа = Список.ВыгрузитьЗначения();
//Числа = [1, 2, 3]

Список.СортироватьПоЗначению(НаправлениеСортировки.Убыв) ;
Числа = Список.ВыгрузитьЗначения();
//Числа = [3, 2, 1]

Фильтрация элементов

Числа = Новый Массив;
Числа.Добавить(1);
Числа.Добавить(2);
Числа.Добавить(3);
Числа.Добавить(4);

//в 1С отсутствует функция фильтрации массива
//поэтому использует обычный перебор значений
Четные = Новый Массив;
Для Каждого Число Из Числа Цикл
    Если (Число % 2 = 0) Тогда
        Четные.Добавить(Число);
    КонецЕсли;
КонецЦикла;
Ключи: |
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *