У меня есть вложенный JSON, который я хотел бы найти, используя lodash. Как я могу получить корневой объект от data
, если искомый термин находится в определенных ключах, а один из ключей динамический?
Например, если у меня есть:
"data": [
{
"name": "Bob's concourse"
"activities": [
{
"day": "Monday",
"routines":
{
"Biking":
{
"details": "won 3 trophies"
"type": "road"
},
"Kayaking":
{
"details": "participated in 3 races"
"type": "rhythm"
}
}
}
}
]
},
{..other_data_etc...},
]
activities
может быть []
; не гарантируется, что он содержит какие-либо данные.
routines
клавиши являются динамическими. то есть Biking
, Kayaking
являются динамическими строками. Это может быть что угодно.
Если я хочу найти races
(без учета регистра), я хочу искать именно в:
data.name
data.activities.routines.*
(динамические клавиши)
data.activities.routines.*.details
Если какой-либо из этих совпадений совпадет, он вернет корневой объект: { "name": "Bob", ..... }
Мне удалось вернуть name
:
function searchText(collection, searchterm) {
return _.filter(collection, function(o) {
return _.includes(o.name.toLowerCase(), searchterm)
} );
};
Но я все еще новичок в lodash, и мне не удалось заставить ни один из вложенных поисков вернуться правильно, особенно с частью динамических ключей.
Может кто-нибудь помочь объяснить решение?