Как сместить элементы массива в зависимости от выбранного элемента?
Есть массив
const arr = [0, 1, 2, 3, 4]
В реале это элементы карусели. При нажатии на каждый айтем его индекс должен становится по центру, а остальные идти по кругу, т.е. при нажатии на 4 получаем массив
[2, 3, 4, 0, 1]
при нажатии на 3
[1, 2, 3, 4, 0]
и тд
Совсем плохо с математикой. Как это сделать?
АПД мне не надо МЕНЯТЬ текущий массив, вопрос в том как узнать какие индексы у соседний от центра айтемов.
АПД 2 каждый айтем это отдельный компонент. все что он знает это общие начальные значения в массиве (это сложные объекты), свой текущий индекс, и новый выбранный индекс центра. Как этому компоненты вычислить свое новое значение? Я упростил вопрос как мог, мне накидали совершенно левых ответов. Сложно как тут все.
Вы как собираетесь объяснять что то компьютеру, если задачу правильно сформулировать не можете? И не мешало бы научиться общаться с людьми, используйте slice и сoncat для сдвига
Положения индексов в массиве для этой задачи можно высчитывать через остаток деления целых чисел.
Получаем индекс выбранного элемента в массиве, находим смещение этого индекса от центрального, для определения смещённого индекса других элементов просто прибавляем к индексу вычисленное смещение от центра и получаем остаток от деления на длину массива. По новым индексам вычисляем геометрическое положение.