Вы идете слишком глубоко здесь:
const level2 = finalData[i].links[x];
Это делает level2 не массивом, из-за которого сортировка не работает.
Удалить индекс доступа:
finalData[i].links;
Вам также не понадобится второй цикл for.
И использовать сортировку из MDN для строк:
// sort by name
items.sort(function(a, b) {
var nameA = a.name.toUpperCase(); // ignore upper and lowercase
var nameB = b.name.toUpperCase(); // ignore upper and lowercase
if (nameA < nameB) {
return -1;
}
if (nameA > nameB) {
return 1;
}
// names must be equal
return 0;
});
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
Ваш цикл будет выглядеть так:
for (let i = 0; i < finalData.length; i++) {
finalData[i].links.sort((a, b) => {
var nameA = a.name.toUpperCase(); // ignore upper and lowercase
var nameB = b.name.toUpperCase(); // ignore upper and lowercase
if (nameA < nameB) {
return -1;
}
if (nameA > nameB) {
return 1;
}
// names must be equal
return 0;
}
}