Найти элемент, который изменил свою позицию в массиве

У меня есть массив, представляющий элементы HTML, которые можно перетаскивать, и поэтому порядок можно изменить. Допустим, перед событием перетаскивания есть массив:

      let oldArr = 
  [{id: 'id1'}, {id: 'id2'}, {id: 'id3'}, {id: 'id4'}, {id: 'id5'}, {id: 'id6'}]

и после перетаскивания и изменения порядка одного элемента (скажем, перетаскивание элементадо позиции (индекса) 2 массив будет:

      let newArr = 
  [{id: 'id1'}, {id: 'id2'}, {id: 'id5'}, {id: 'id3'}, {id: 'id4'}, {id: 'id6'}]

Как можно было решить, какой элемент был перенесен на новую позицию, сравнивая старый и новый массив?

Обратите внимание, что если изменены только два элемента, расположенных рядом друг с другом, невозможно решить, какой из этих двух элементов был на самом деле перетянут — в этом случае не имеет значения, какой из этих двух элементов будет результат.

1 ответ

Используйте элементы до и после целевого элемента (соседей), чтобы определить, какой элемент (ы) переместился (переместился). Вы можете уточнить логику, чтобы она более соответствовала вашей ситуации:

Другие вопросы по тегам