awilum.ru
Статьи Курсы Об авторе

Циклический сдвиг массива в JavaScript

Циклический сдвиг массива - это операция, при которой элементы массива перемещаются влево или вправо на определенное количество шагов, и элементы, выходящие за пределы массива, перемещаются на противоположную сторону массива. Этот процесс широко используется в программировании, особенно в алгоритмах обработки данных и структурах данных.

JavaScript, как и многие другие языки программирования, предоставляет различные способы реализации циклического сдвига массива.

Использование методов push() и shift()

Один из самых простых способов выполнения циклического сдвига - это использование методов push() и shift(). Метод push() добавляет элемент в конец массива, а метод shift() удаляет первый элемент массива и возвращает его значение.

function cyclicShift(array, steps) {
    for (let i = 0; i < steps; i++) {
        array.push(array.shift());
    }
    return array;
}

// Пример использования:
let arr = [1, 2, 3, 4, 5];
let shiftedArr = cyclicShift(arr, 2);

console.log(shiftedArr); // [3, 4, 5, 1, 2]

В этом примере мы передаем массив arr и количество шагов 2 функции cyclicShift(). Затем метод push() используется для перемещения первого элемента в конец массива, что происходит steps раз.

Использование оператора остатка %

Другой способ выполнения циклического сдвига - использование оператора остатка %. Этот метод позволяет избежать создания нового массива и выполнить сдвиг в пределах одного массива.

function cyclicShift(array, steps) {
    const len = array.length;
    steps %= len;
    return array.slice(steps).concat(array.slice(0, steps));
}

// Пример использования:
let arr = [1, 2, 3, 4, 5];
let shiftedArr = cyclicShift(arr, 2);

console.log(shiftedArr); // [3, 4, 5, 1, 2]

Здесь мы используем оператор % для вычисления реального количества шагов, после чего с помощью методов slice() объединяем две части массива: от steps до конца и от начала до steps.

Хотите освоить JavaScript и стать востребованным разработчиком?
Присоединяйтесь к курсу JavaScript Базовый уровень прямо сейчас!
Изучите основы и продвинутые концепции, создавайте интерактивные веб-приложения и воплотите свои идеи в реальности. Не упустите шанс стать экспертом в мире разработки – начните свой путь прямо сейчас!
Обнаружили ошибку в этой статье? Хотите уточнить, обновить или добавить что-то?
Все мои статьи доступны для редактирования на GitHub. Буду благодарен за любое улучшение или исправление!