У меня есть массив объектов, эти объекты также имеют в некоторых случаях вложенные массивы, которые содержат объекты.
Каждый объект как свойство key
, которое мне нужно извлечь.
Примером JSON, с которым я имею дело, является ...
{
"items": [
{
"key":"main",
"foo":"bar",
"children":[
{
"key":"one",
"foo":"barboo"
},
{
"key":"two",
"foo":"boobaz"
}
]
},
{
"key":"secondary",
"foo":"baz",
"children":[
{
"key":"one",
"foo":"barboobaz"
},
{
"key":"two",
"foo":"boobazfoo"
}
]
}
]
}
В настоящее время я сопоставляю items
и возвращаю key
, затем, где я нахожу детей, я сопоставляю снова возвращая key
.
Что-то вроде этого псевдокода ...
class SomeClass {
let contentKeys = []
extractKeys = navItems => {
navItems.map(item => this.appendToContentRequest(item));
return this.contentKeys.join(',');
};
appendToContentRequest(item) {
if (~!this.contentKeys.indexOf(item.key)) {
this.contentKeys.push(item.key);
}
if (item.children) {
item.children.map(child => this.appendToContentRequest(child));
}
}
}
Мне это не нравится, оно кажется очень "хакерским" и не очень функциональным.
Есть лилучший способ достичь этого?