Поиск публикаций
Работа с массивами
Модуль массивы содержит все необходимые средства для создания, изменения, поиска и анализа списков значений. Массивы могут хранить числа, строки, логические значения, вложенные массивы, объекты и другие данные.
Создание и вывод
массивы.создатьсоздать(…)
Собирает новый массив из перечисленных значений.
₽набор = массивы.создать(5, 2, "текст", 1, 7);
массивы.соединитьсоединить(массив, разделитель)
Превращает все элементы в строки и склеивает их через указанный разделитель.
вывод(массивы.соединить(₽набор, ", ")); // "5, 2, текст, 1, 7"
Изменение порядка и содержания
массивы.сортироватьсортировать(массив)
Создаёт новый массив, в котором элементы расположены по возрастанию. Числа — по значению, строки — по алфавиту. Разные типы группируются отдельно.
₽по_порядку = массивы.сортировать(₽набор);
массивы.обратныйобратный(массив)
Переворачивает порядок следования элементов.
₽перевёрнутый = массивы.обратный(₽набор);
массивы.вставитьвставить(массив, позиция, значение)
Добавляет новый элемент в указанную позицию, сдвигая остальные вправо.
₽с_вставкой = массивы.вставить(₽набор, 2, 99);
массивы.удалитьудалить(массив, позиция)
Убирает элемент по указанной позиции, сдвигая остальные влево.
₽без_элемента = массивы.удалить(₽набор, 3);
массивы.срезсрез(массив, начало, конец)
Вырезает часть массива от позиции начало (включительно) до конец (не включая). Отрицательные числа отсчитываются с конца.
₽фрагмент = массивы.срез(₽набор, 1, 4);
массивы.заполнитьзаполнить(массив, значение, начало, конец)
Заменяет элементы в заданном диапазоне на указанное значение.
₽заполненный = массивы.заполнить(₽набор, 0, 2, 5);
Вложенные списки и уникальность
массивы.плоскийплоский(массив, глубина)
Разворачивает вложенные массивы на заданную глубину.
₽вложенный = массивы.создать(1, массивы.создать(2, 3), массивы.создать(4, массивы.создать(5))); ₽развёрнутый = массивы.плоский(₽вложенный, 1);
массивы.уникальныйуникальный(массив)
Удаляет повторяющиеся значения, оставляя только первые вхождения.
₽с_повторами = массивы.создать(1, 2, 2, "a", "a"); ₽чистый = массивы.уникальный(₽с_повторами);
Сумма и максимум
массивы.суммасумма(массив)
Складывает все числовые элементы. Нечисловые игнорируются.
₽общая_сумма = массивы.сумма(₽набор);
массивы.максимуммаксимум(массив)
Находит наибольшее число среди числовых элементов.
₽самое_большое = массивы.максимум(₽набор);
Поиск и проверка условий
массивы.найтинайти(массив, проверка)
Возвращает первый элемент, для которого проверка вернула истина. Если такого нет — возвращает ничто.
ничто₽первый_больше_5 = массивы.найти(₽набор, функция(₽x) { возврат ₽x > 5; });
массивы.индексиндекс(массив, значение)
Определяет позицию первого вхождения значения. Если не найдено — возвращает -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");