oft/module/utils/performArraySort.mjs

31 lines
677 B
JavaScript

export function performArraySort(
element,
{ list, targetIndex },
) {
// Case: same position
if (list.indexOf(el => el === element) === targetIndex) {
return Array.from(list);
};
// Case: start of array
if (targetIndex === 0) {
list = list.filter(el => el !== element);
return [element, ...list];
};
// Case: end of array
if (targetIndex === list.length - 1) {
list = list.filter(el => el !== element);
return [...list, element];
};
// Case: middle of array
const front = list
.slice(0, targetIndex)
.filter(el => el !== element);
const back = list
.slice(targetIndex)
.filter(el => el !== element);
return [...front, element, ...back];
};