31 lines
677 B
JavaScript
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];
|
|
};
|