Этот вопрос закрыт для ответов, так как повторяет вопрос Как реализовать вращение массива?

Перемещение элементов в массиве с одной позицию на другую, как реализовать?

Здравствуйте.
Есть массив с объектами.
Необходимо при нажатии кнопки вправо(и влево) производить сортировку массива.

Т.е., если в массиве 4 элемента, то элемент на 4 позиции перемещать на 1 позицию, а элементы на 1, 2 и 3 позиции перемещать на 2, 3 и 4 позиции соответственно.
И при следующем нажатии кнопки должно произойти тоже самое.

Как это сделать? Поможете?

И если я САМ не могу справиться с такой задачей, то стоит ли делать вывод, что я не осилю даже уровень джуниора попросту потому, что не хватает интеллекта и на программирование стоит забить?

Благодарю!
  • Вопрос задан
  • 596 просмотров
Решения вопроса 1
MrDecoy
@MrDecoy Куратор тега JavaScript
Верставший фронтендер
И если я САМ не могу справиться с такой задачей, то стоит ли делать вывод, что я не осилю даже уровень джуниора попросту потому, что не хватает интеллекта и на программирование стоит забить?

"Москва не сразу строилась" ©

На начальном уровне помогает сначала составить алгоритм на естественном языке, или псевдоязыке.
Например:
1. Нажал на кнопку
2. Если кнопка вправо
 2.1 то нужно извлечь последний элемент из массива и вставить его в начало
 2.2 иначе извлечь первый элемент массива и вставить его в конец.


С алгоритмом определились. Идём изучать методы массивов.
https://learn.javascript.ru/array-methods

Видим что:
arr.push(...items) – добавляет элементы в конец,
arr.pop() – извлекает элемент из конца,
arr.shift() – извлекает элемент из начала,
arr.unshift(...items) – добавляет элементы в начало.

Отлично. Все они нам как раз и подходяд.

Переписываем алгоритм на псевдокод
onClickNext
 var last = array.pop()
 array.unshift(last)

onClickPrev
  var first = array.shift()
  array.push(first)


Ну и дело за малым. Переписать на js с обработчиками событий и тд.
Ответ написан
Ответы на вопрос 1
Alexandroppolus
@Alexandroppolus
кодир
Т.е., если в массиве 4 элемента, то элемент на 4 позиции перемещать на 1 позицию, а элементы на 1, 2 и 3 позиции перемещать на 2, 3 и 4 позиции соответственно.

то что ты описал - это не сортировка, а циклический сдвиг. В некоторых случаях (например, если длина массива постоянна) эффективнее не вращать массив, а двигать "указатель на начало"

ну а если таки нужно менять массив, то splice+push. Если иммутабельно, то ещё предварительно const newArr = [...arr]
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы