Refactor sortMoveOperations a bit
This commit is contained in:
parent
dff1fc0811
commit
763b0b7c3c
|
@ -66,15 +66,15 @@ export function sortObjectKeys (object, direction = 1) {
|
||||||
*/
|
*/
|
||||||
export function sortMoveOperations (array, comparator) {
|
export function sortMoveOperations (array, comparator) {
|
||||||
const operations = []
|
const operations = []
|
||||||
|
const sorted = []
|
||||||
|
|
||||||
const sorted = array.slice()
|
for (let i = 0; i < array.length; i++) {
|
||||||
|
|
||||||
for (let i = 1; i < sorted.length; i++) {
|
|
||||||
// TODO: implement a faster way to sort (binary tree sort?)
|
// TODO: implement a faster way to sort (binary tree sort?)
|
||||||
// TODO: can we simplify the following code?
|
// TODO: can we simplify the following code?
|
||||||
if (comparator(sorted[i - 1], sorted[i]) > 0) {
|
const item = array[i]
|
||||||
|
if (i > 0 && comparator(sorted[i - 1], item) > 0) {
|
||||||
let j = i - 1
|
let j = i - 1
|
||||||
while (comparator(sorted[j - 1], sorted[i]) > 0 && j > 0) {
|
while (j > 0 && comparator(sorted[j - 1], item) > 0) {
|
||||||
j--
|
j--
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -83,8 +83,9 @@ export function sortMoveOperations (array, comparator) {
|
||||||
toIndex: j
|
toIndex: j
|
||||||
})
|
})
|
||||||
|
|
||||||
const item = sorted.splice(i, 1)
|
|
||||||
sorted.splice(j, 0, [item])
|
sorted.splice(j, 0, [item])
|
||||||
|
} else {
|
||||||
|
sorted.push(item)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue