Ну прям свою сортировку это перебор, достаточно сделать как-то так

:
const elements = [
[-1, 'A'],
[0, 'C'],
[-1, 'B'],
[0, 'D'],
[0, 'E'],
[1, 'F'],
[2, 'G'],
];
const sorted = elements
.map((arr, index) => [index, ...arr])
.sort((elementA, elementB) => {
return elementA[1] - elementB[1] || elementA[0] - elementB[0];
})
.map((arr) => arr.slice(1));
console.log(sorted);