Для рекурсивного извлечения данных массива объектов в TypeScript можно использовать рекурсивную функцию. Давайте рассмотрим пример.
Предположим, у нас есть массив объектов, каждый из которых имеет следующую структуру:
type NestedObject = { id: number; name: string; children: NestedObject[]; };
Мы хотим рекурсивно извлечь все name
из данного массива объектов.
Для начала создадим функцию extractNames
, которая будет принимать массив объектов типа NestedObject[]
и возвращать массив строк (string[]
) с извлеченными именами:
function extractNames(objects: NestedObject[]): string[] { // Создаем пустой массив, в который будем складывать извлеченные имена const names: string[] = []; // Итерируемся по каждому объекту в переданном массиве for (const obj of objects) { // Извлекаем имя объекта и добавляем его в массив имен names.push(obj.name); // Если объект имеет дочерние объекты, вызываем функцию extractNames для дочерних объектов if (obj.children.length > 0) { const childNames = extractNames(obj.children); names.push(...childNames); // Добавляем извлеченные имена дочерних объектов в массив имен } } // Возвращаем массив имен return names; }
Теперь мы можем использовать эту функцию для извлечения имен из массива объектов. Вот пример использования:
// Создаем тестовый массив объектов const objects: NestedObject[] = [ { id: 1, name: "Object 1", children: [ { id: 2, name: "Object 2", children: [] }, { id: 3, name: "Object 3", children: [ { id: 4, name: "Object 4", children: [] } ] } ] }, { id: 5, name: "Object 5", children: [] } ]; // Извлекаем имена из массива объектов const names = extractNames(objects); // Выводим имена в консоль console.log(names); // ["Object 1", "Object 2", "Object 3", "Object 4", "Object 5"]
Таким образом, мы рекурсивно извлекли все имена из массива объектов с помощью функции extractNames
.