Поиск публикаций
Муниципальные услуги

Получите услугу онлайн

Перейти

Работа с массивами

Модуль массивы содержит все необходимые средства для создания, изменения, поиска и анализа списков значений. Массивы могут хранить числа, строки, логические значения, вложенные массивы, объекты и другие данные.

 Создание и вывод

массивы.создатьсоздать(…)

Собирает новый массив из перечисленных значений.

Результат: массив
Пример:
₽набор = массивы.создать(5, 2, "текст", 1, 7);

массивы.соединитьсоединить(массив, разделитель)

Превращает все элементы в строки и склеивает их через указанный разделитель.

Входные данныеВидОписание
массивмассивИсходный список
разделительстрокаСимволы между элементами
Результат: строка
Пример:
вывод(массивы.соединить(₽набор, ", "));  // "5, 2, текст, 1, 7"

 Изменение порядка и содержания

массивы.сортироватьсортировать(массив)

Создаёт новый массив, в котором элементы расположены по возрастанию. Числа — по значению, строки — по алфавиту. Разные типы группируются отдельно.

Результат: отсортированный массив
₽по_порядку = массивы.сортировать(₽набор);

массивы.обратныйобратный(массив)

Переворачивает порядок следования элементов.

Результат: перевёрнутый массив
₽перевёрнутый = массивы.обратный(₽набор);

массивы.вставитьвставить(массив, позиция, значение)

Добавляет новый элемент в указанную позицию, сдвигая остальные вправо.

Входные данныеВидОписание
массивмассивИсходный список
позициячислоНомер места (от 0)
значениелюбойВставляемые данные
Результат: новый массив
₽с_вставкой = массивы.вставить(₽набор, 2, 99);

массивы.удалитьудалить(массив, позиция)

Убирает элемент по указанной позиции, сдвигая остальные влево.

Входные данныеВидОписание
массивмассивИсходный список
позициячислоНомер удаляемого элемента
Результат: новый массив
₽без_элемента = массивы.удалить(₽набор, 3);

массивы.срезсрез(массив, начало, конец)

Вырезает часть массива от позиции начало (включительно) до конец (не включая). Отрицательные числа отсчитываются с конца.

Входные данныеВидОписание
массивмассивИсходный список
началочислоС какой позиции начинать
конецчислоДо какой позиции (не входит)
Результат: новый массив
₽фрагмент = массивы.срез(₽набор, 1, 4);

массивы.заполнитьзаполнить(массив, значение, начало, конец)

Заменяет элементы в заданном диапазоне на указанное значение.

Входные данныеВидОписание
массивмассивИсходный список
значениелюбойЧем заполнять
началочислоС какой позиции
конецчислоДо какой позиции (не входит)
Результат: новый массив
₽заполненный = массивы.заполнить(₽набор, 0, 2, 5);

 Вложенные списки и уникальность

массивы.плоскийплоский(массив, глубина)

Разворачивает вложенные массивы на заданную глубину.

Входные данныеВидОписание
массивмассивМожет содержать другие массивы
глубиначислоСколько уровней раскрыть (по умолчанию 1)
Результат: плоский массив
₽вложенный = массивы.создать(1, массивы.создать(2, 3), массивы.создать(4, массивы.создать(5)));
₽развёрнутый = массивы.плоский(₽вложенный, 1);

массивы.уникальныйуникальный(массив)

Удаляет повторяющиеся значения, оставляя только первые вхождения.

Результат: массив без дублей
₽с_повторами = массивы.создать(1, 2, 2, "a", "a");
₽чистый = массивы.уникальный(₽с_повторами);

 Сумма и максимум

массивы.суммасумма(массив)

Складывает все числовые элементы. Нечисловые игнорируются.

Результат: число
₽общая_сумма = массивы.сумма(₽набор);

массивы.максимуммаксимум(массив)

Находит наибольшее число среди числовых элементов.

Результат: число
₽самое_большое = массивы.максимум(₽набор);

массивы.найтинайти(массив, проверка)

Возвращает первый элемент, для которого проверка вернула истина. Если такого нет — возвращает ничто.

Входные данныеВидОписание
массивмассивИсходный список
проверкафункцияПринимает элемент, возвращает истина или ложь
Результат: найденный элемент или ничто
₽первый_больше_5 = массивы.найти(₽набор, функция(₽x) { возврат ₽x > 5; });

массивы.индексиндекс(массив, значение)

Определяет позицию первого вхождения значения. Если не найдено — возвращает -1.

Входные данныеВидОписание
массивмассивИсходный список
значениелюбойЧто ищем
Результат: число (позиция или -1)
₽позиция_семёрки = массивы.индекс(₽набор, 7);

массивы.содержитсодержит(массив, значение)

Проверяет, есть ли в массиве указанное значение.

Входные данныеВидОписание
массивмассивИсходный список
значениелюбойЧто ищем
Результат: истина или ложь
₽восьмёрка_есть = массивы.содержит(₽набор, 8);

массивы.каждыйЛикаждыйЛи(массив, проверка)

Проверяет, все ли элементы удовлетворяют условию.

Входные данныеВидОписание
массивмассивИсходный список
проверкафункцияВозвращает истина или ложь
Результат: истина или ложь
₽все_чётные = массивы.каждыйЛи(₽набор, функция(₽x) {
    если (₽x == ₽x + 0) { возврат ₽x % 2 == 0; } иначе { возврат истина; }
});

массивы.некоторыйнекоторый(массив, проверка)

Проверяет, существует ли хотя бы один элемент, удовлетворяющий условию.

Входные данныеВидОписание
массивмассивИсходный список
проверкафункцияВозвращает истина или ложь
Результат: истина или ложь
₽есть_больше_5 = массивы.некоторый(₽набор, функция(₽x) { возврат ₽x > 5; });

массивы.преобразоватьПлоскийпреобразоватьПлоский(массив, преобразование)

Применяет преобразование к каждому элементу и, если результат — массив, раскрывает его на один уровень.

Входные данныеВидОписание
массивмассивИсходный список
преобразованиефункцияВозвращает одно значение или массив
Результат: новый массив
₽результат = массивы.преобразоватьПлоский(₽набор, функция(₽x) {
    если (₽x == ₽x + 0) { возврат массивы.создать(₽x, ₽x*2); }
    иначе { возврат массивы.создать(₽x); }
});

 Пример полной проверки

Ниже приведён скрипт, который последовательно пробует все возможности модуля:

вывод("=== ПОЛНАЯ ПРОВЕРКА РАБОТЫ С МАССИВАМИ ===\n");

₽исходный = массивы.создать(5, 2, 8, 3, "текст", 1, 7, 4);
вывод("Исходный: " + массивы.соединить(₽исходный, ", ") + "\n");

₽отсортированный = массивы.сортировать(₽исходный);
вывод("По порядку: " + массивы.соединить(₽отсортированный, ", ") + "\n");

₽обратный = массивы.обратный(₽исходный);
вывод("В обратном порядке: " + массивы.соединить(₽обратный, ", ") + "\n");

₽с_вставкой = массивы.вставить(₽исходный, 2, 99);
вывод("Вставить 99 на позицию 2: " + массивы.соединить(₽с_вставкой, ", ") + "\n");

₽без_элемента = массивы.удалить(₽исходный, 4);
вывод("Удалить элемент с позиции 4: " + массивы.соединить(₽без_элемента, ", ") + "\n");

₽фрагмент = массивы.срез(₽исходный, 2, 5);
вывод("Срез с 2 по 5 (не включая 5): " + массивы.соединить(₽фрагмент, ", ") + "\n");

₽найденный = массивы.найти(₽исходный, функция(₽x) { возврат ₽x > 5; });
вывод("Первый больше 5: " + ₽найденный + "\n");

₽позиция = массивы.индекс(₽исходный, 7);
вывод("Позиция числа 7: " + ₽позиция + "\n");

₽есть_восемь = массивы.содержит(₽исходный, 8);
вывод("Содержит 8? " + ₽есть_восемь + "\n");

₽заполненный = массивы.заполнить(₽исходный, 0, 2, 5);
вывод("Заполнить нулями с 2 по 5: " + массивы.соединить(₽заполненный, ", ") + "\n");

₽вложенный = массивы.создать(1, массивы.создать(2, 3), массивы.создать(4, массивы.создать(5)));
₽развёрнутый = массивы.плоский(₽вложенный, 1);
вывод("Развернуть на 1 уровень: " + массивы.соединить(₽развёрнутый, ", ") + "\n");

₽с_повторами = массивы.создать(1, 2, 2, 3, 3, 3, "a", "a");
₽без_дублей = массивы.уникальный(₽с_повторами);
вывод("Уникальные значения: " + массивы.соединить(₽без_дублей, ", ") + "\n");

₽сумма = массивы.сумма(₽исходный);
вывод("Сумма чисел: " + ₽сумма + "\n");

₽максимум = массивы.максимум(₽исходный);
вывод("Наибольшее число: " + ₽максимум + "\n");

₽все_чётные = массивы.каждыйЛи(₽исходный, функция(₽x) {
    если (₽x == ₽x + 0) { возврат ₽x % 2 == 0; } иначе { возврат истина; }
});
вывод("Все ли элементы чётные? " + ₽все_чётные + "\n");

₽есть_больше_5 = массивы.некоторый(₽исходный, функция(₽x) { возврат ₽x > 5; });
вывод("Есть элемент больше 5? " + ₽есть_больше_5 + "\n");

₽преобразованный = массивы.преобразоватьПлоский(₽исходный, функция(₽x) {
    если (₽x == ₽x + 0) { возврат массивы.создать(₽x, ₽x*2); }
    иначе { возврат массивы.создать(₽x); }
});
вывод("Преобразовать с разворачиванием (x → [x, 2x]): " + массивы.соединить(₽преобразованный, ", ") + "\n");

вывод("=== ВСЕ ПРОВЕРКИ УСПЕШНО ЗАВЕРШЕНЫ ===\n");