Используя TypeScript, я пытаюсь отсортировать массив объектов по имени фактического объекта, а не по ключу объекта.На этих объектах также существует ключ имени, который является тем же именем фактического объекта.Я пытаюсь увидеть, где я иду не так с моей логикой здесь.Я попытался выполнить сортировку по ключу имени объекта безуспешно.
Я пытался использовать функцию .sort () несколькими способами.
Пример массива следующий:
templateReports = [
{"Project Report": {name: "Project Report", docType: "Project"}},
{"Department Report": {name: "Department Report", docType: "Department"}},
{"Room Report": {name: "Room Report", docType: "Room"}}
]
Я пробовал следующее:
templateReports.sort((a,b) => (a.name > b.name) ? 1 : ((b.name > a.name) ? -1 : 0));
Я понимаю, что это не работает, потому что для вызова первого имени ключа в массиве я мог бы сделать что-то вроде:
console.log(templateReports[0]["Project Report"].name);
и тогда я получу имя для первого объекта в массиве.Так что я знаю, что мне нужно изменить, как я использую функцию источника, чтобы что-то вроде:
templateReports.sort((a,b) => (a[nameOfObject].name > b[nameOfNextObject].name) ? 1 : ((b[nameOfNextObject].name > a[nameOfObject].name) ? -1 : 0));
Я пытаюсь заставить ее сортировать по алфавиту, чтобы она стала:
templateReports = [
{"Department Report": {name: "Department Report", docType: "Department"}},
{"Project Report": {name: "Project Report", docType: "Project"}},
{"Room Report": {name: "Room Report", docType: "Room"}}
]
Как мне а) выполнить это с помощью метода сортировки или б) сделать что-то для сортировки по фактическому имени объекта?
Спасибо.