Javascript 从对象和嵌套数组中提取关键帧
我有一个对象数组,这些对象在某些情况下也有嵌套数组,其中包含对象 每个对象都作为我需要提取的属性键 我正在处理的JSON的一个例子是Javascript 从对象和嵌套数组中提取关键帧,javascript,arrays,functional-programming,Javascript,Arrays,Functional Programming,我有一个对象数组,这些对象在某些情况下也有嵌套数组,其中包含对象 每个对象都作为我需要提取的属性键 我正在处理的JSON的一个例子是 { "items": [ { "key":"main", "foo":"bar", "children":[ { "key":"one", "foo":"barboo" }, {
{
"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"
}
]
}
]
}
目前我正在映射项并返回键,然后在哪里找到子项,我将再次映射并返回键
类似于这个伪代码的东西
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));
}
}
}
不过我不喜欢这个,它感觉很“黑”而且不太实用
有没有更好的方法来实现这一点?
风险值数据={
项目:[
{
键:main,
福:酒吧,
儿童:[
{
关键:一,,
福:巴布
},
{
关键:二,,
福:布巴兹
}
]
},
{
关键词:中学,
福:巴兹,
儿童:[
{
关键:一,,
福:巴布巴兹
},
{
关键:二,,
foo:boobazfoo
}
]
}
]
}
函数flatNestedKeyarray{
var结果=[];
const context=this;
array.foreacha函数{
result.pusha.key;
如果Array.isArraya.children{
结果=result.concatcontext.flatNestedKeya.children;
}
};
返回结果;
}
var keys=flatNestedKeydata.items;
控制台日志键 可以使用下面的递归函数获取任何嵌套对象数组的任何键的值 函数提取数组,键名{ 返回array.reducea,b=> a、 concat…Object.keysb.mape=>e===keyName?b[e]:Array.isArrayb[e]?extractb[e],keyName:null,[].filtere=>e; } console.logextractobj.items,“key”; 常量对象={ 项目:[{ 键:main, 福:酒吧, 儿童:[{ 关键:一,, 福:巴布 }, { 关键:二,, 福:布巴兹 } ] }, { 关键词:中学, 福:巴兹, 儿童:[{ 关键:一,, 福:巴布巴兹 }, { 关键:二,, foo:boobazfoo } ] } ] }
您期望的输出是什么?我真的只想要一个字符串数组,基本上是键谢谢您的时间:,这太完美了!感谢您抽出时间: