@jeruthadam
Я крут

Как сместить элементы массива в зависимости от выбранного элемента?

Есть массив

const arr = [0, 1, 2, 3, 4]

В реале это элементы карусели. При нажатии на каждый айтем его индекс должен становится по центру, а остальные идти по кругу, т.е. при нажатии на 4 получаем массив

[2, 3, 4, 0, 1]

при нажатии на 3

[1, 2, 3, 4, 0]

и тд

Совсем плохо с математикой. Как это сделать?

АПД мне не надо МЕНЯТЬ текущий массив, вопрос в том как узнать какие индексы у соседний от центра айтемов.

АПД 2 каждый айтем это отдельный компонент. все что он знает это общие начальные значения в массиве (это сложные объекты), свой текущий индекс, и новый выбранный индекс центра. Как этому компоненты вычислить свое новое значение? Я упростил вопрос как мог, мне накидали совершенно левых ответов. Сложно как тут все.
  • Вопрос задан
  • 341 просмотр
Пригласить эксперта
Ответы на вопрос 2
@McBernar
Нэнэ. Не надо так с массивами делать. Передвижение значений в массивах — очень затратная операция.

Лучше держите отдельную переменную, которая обозначает активный слайд. Соответственно, остальные слайды — это +1, +2..., -1, -2... от текущего.
Ответ написан
hahenty
@hahenty
('•')
const centerIndex = Math.floor( arr.length / 2 );
let choise = 4; // например
while( arr[ centerIndex ] !== choise ) {
  arr.unshift( arr.pop() );
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы