У меня есть следующий массив объектов.
[
{ id: 1, title: 't1', order: 0 },
{ id: 2, title: 't1', order: 1 },
{ id: 3, title: 't1', order: 2 },
]
Я хочу несколько раз изменить порядок элементов. В первой попытке.
// move id: 1, fromOrder: 0, toOrder: 2
[
{ id: 1, title: 't1', order: 2 },
{ id: 2, title: 't2', order: 0 },
{ id: 3, title: 't3', order: 1 },
]
Во второй попытке.
// move id: 3, fromOrder: 1, toOrder: 0
[
{ id: 1, title: 't1', order: 2 },
{ id: 2, title: 't2', order: 1 },
{ id: 3, title: 't3', order: 0 },
]
Как видите, суть в том, что я не собираюсь перемещать элемент, я просто хочу обновить атрибут заказа.
Я сделал что-то вроде ниже, но он не работает должным образом.
const reorder = (array, id, oldIndex, newIndex) => {
const ordered = array
.map(item => item.order === newIndex ? { ...item, order: oldIndex } : item)
.map(item => item.id === id ? { ...item, order: newIndex } : item);
return ordered;
};
Ответ на публикацию Разъяснение третьей стороны Пользователь хотел переместить все заказы товаров (включая обертывание), а не просто поменять местами два значения, сохраняя относительные порядки.