Я бы хотел найти направление элемента, учитывая его значение сортировки.Тем не менее, я обнаружил, что один index
не может выполнить то, что я хочу.
Учитывая функцию сортировки, я только хочу выяснить, действительно ли элемент перемещен в другой индекс на основе его значения, а непотому что другой элемент был перемещен.
Пример:
const things = [
{ id: 't1', val: 4 }, // This moves to index 1, see T1 notes
{ id: 't2', val: 2 },
{ id: 't3', val: 5 }, // This moves to index 0
{ id: 't4', val: 1 },
{ id: 't5', val: 3 },
]
// Sort to highest vals first
let thingOrder = things.sort((a, b) => b.val - a.val)
thingOrder = thingOrder.map((thing, index) => {
const oldIndex = things.indexOf(thing)
if (index === oldIndex)
thing.direction = 'same'
else if (index > oldIndex)
thing.direction = 'up'
else if (index < oldIndex)
thing.direction = 'down'
return thing
})
console.log(thingOrder)
Ожидаемый результат:
{ id: 't3', val: 5 }, // Up
{ id: 't1', val: 4 }, // Same
{ id: 't5', val: 3 }, // Same
{ id: 't2', val: 2 }, // Down
{ id: 't4', val: 1 }, // Down
Примечания T1: Технически элемент с идентификатором t1
перемещен в индекс1, но не из-за val
, а из-за того, что T3 переместился над ним.
Как мне достичь цели, чтобы определить, действительно ли элемент перемещается вверх или вниз в списке?