Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从对象和嵌套数组中提取关键帧_Javascript_Arrays_Functional Programming - Fatal编程技术网

Javascript 从对象和嵌套数组中提取关键帧

Javascript 从对象和嵌套数组中提取关键帧,javascript,arrays,functional-programming,Javascript,Arrays,Functional Programming,我有一个对象数组,这些对象在某些情况下也有嵌套数组,其中包含对象 每个对象都作为我需要提取的属性键 我正在处理的JSON的一个例子是 { "items": [ { "key":"main", "foo":"bar", "children":[ { "key":"one", "foo":"barboo" }, {

我有一个对象数组,这些对象在某些情况下也有嵌套数组,其中包含对象

每个对象都作为我需要提取的属性键

我正在处理的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"
         }
      ]
   }
]
}
目前我正在映射项并返回键,然后在哪里找到子项,我将再次映射并返回键

类似于这个伪代码的东西

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 } ] } ] }
您期望的输出是什么?我真的只想要一个字符串数组,基本上是键谢谢您的时间:,这太完美了!感谢您抽出时间: