Трассировка всего дерева узлов вложенных объектов - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть сложный объект, который мне нужен для извлечения подуровней, я не знаю, как я могу это сделать. Я читаю рекурсивно, но я не знаю, как это сделать.

это мой объект:

https://pastebin .com / m2dkiHkD

Этот объект взято из таблицы, где qLeft - это размеры, которые печатаются в первом столбце таблицы следующим образом:

Исходная таблица

И моя цель - сделать что-то вроде этого:

Цель

Моя идея - создать массив с новыми строками, извлеченными из сложного объекта, чтобы я мог добавить в свою новую таблицу

Спасибо за любые идеи

1 Ответ

0 голосов
/ 30 апреля 2020

Я не думаю, что у вас есть рекурсивная структура данных, поэтому рекурсия не помогла бы, но вам нужно просмотреть данные и выбрать то, что вам нужно, как вы сказали. Основная проблема в том, чтобы узнать, какие данные вам нужны и как их найти.

Я думаю, это может дать вам представление о том, чего вы пытаетесь достичь,

// If there are multiple items inside qPivotDataPages you'll need to loop
// over those and call process for each one, then join the resulting arrays.
const data = json.qPivotDataPages[0].qLeft;

const result = process(data);

function process(input) {
    const [team1, team2] = input;
    const team1Results = processTeam(team1);
    const team2Results = processTeam(team2);
    return [...team1Results, ...team2Results];
}

function processTeam(teamData) {
    const teamResults = [];

    const teamName = teamData.qText;
    const halfDatas = teamData.qSubNodes.filter((item) => item.qText === '1ª' || item.qText === '2ª' || item.qText === 'InCia' );

    halfDatas.forEach((halfData) => {
        const half = halfData.qText;

        halfData.qSubNodes.forEach((item) => {
            if (item.qText === 'MI' || item.qText === 'ME') {
                teamResults.push({
                    team: teamName,
                    half: half,
                    type: item.qText,
                });
            }
        });
    });

    return teamResults;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...