Выполните итерацию по сложному JSON, чтобы найти совпадение и вернуть связанные данные - PullRequest
0 голосов
/ 28 августа 2018

У меня сложный JSON, который настроен примерно так:

var data = [
{
    "source": {
            "data":[
                {"name":"A", "type":"main"}
            ]
    },
    "target": {
            "data":[
                {"name":"B", "type":"tech"}
            ]
    }
},
{
    "source": {
            "data":[
                {"name":"B", "type":"tech"}
            ]
    },
    "target": {
            "data":[
                {"name":"C", "type":"software engineer"}
            ]
    }
},
{
    "source": {
            "data":[
                {"name":"B", "type":"tech"}
            ]
    },
    "target": {
            "data":[
                {"name":"D", "type":"systems engineer"}
            ]
    }
}
]

в основном, каждая запись настроена с «источником» и «целью». У каждого источника и цели есть раздел «данные», который объясняет детали узла, а также информацию о подключенных узлах («родитель» и «потомок»).

Для моей проблемы я хочу иметь возможность перебирать больший JSON, находить совпадение имен в «target» и возвращать всю примыкающую информацию по мере необходимости, например что-то вроде data [i] .target.data.name ).

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

Проверьте консоль на этом JSFiddle для полного вывода: https://jsfiddle.net/KateJean/7o3suadx/

Спасибо

1 Ответ

0 голосов
/ 28 августа 2018

Это вернет все элементы ваших данных, при этом target.data.name равно строке в str:

const str = 'A';
const matches = data.filter(el => el.target.data.name === str);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...