25
common/resources/client/utils/array/move-item-in-array.ts
Executable file
25
common/resources/client/utils/array/move-item-in-array.ts
Executable file
@@ -0,0 +1,25 @@
|
||||
import {clamp} from '../number/clamp';
|
||||
|
||||
export function moveItemInArray<T = any>(
|
||||
array: T[],
|
||||
fromIndex: number,
|
||||
toIndex: number
|
||||
): T[] {
|
||||
const from = clamp(fromIndex, 0, array.length - 1);
|
||||
const to = clamp(toIndex, 0, array.length - 1);
|
||||
|
||||
if (from === to) {
|
||||
return array;
|
||||
}
|
||||
|
||||
const target = array[from];
|
||||
const delta = to < from ? -1 : 1;
|
||||
|
||||
for (let i = from; i !== to; i += delta) {
|
||||
array[i] = array[i + delta];
|
||||
}
|
||||
|
||||
array[to] = target;
|
||||
|
||||
return array;
|
||||
}
|
||||
Reference in New Issue
Block a user