js递归返回想要的值

  let a = [{

        "k": [{

          "k": [{

            "k": [{

              "name": "名称4"

            },{

              "name": "名称5"

            }],

            "name": "名称2"

          }],

          "name": "名称1"

        }],

        "name": "名称0"

      }, 

      {

        "k": [{

          "k": [{

            "k": [{

              "name": "名称44"

            }],

            "name": "名称22"

          }],

          "name": "名称11"

        }],

        "name": "名称00"

      }]

      

      // 希望的结果

      ['名称0-名称1-名称2-名称3-名称4','名称0-名称1-名称2-名称3-名称5', '名称00-名称11-名称22-名称33-名称44']


繁花如伊
浏览 586回答 3
3回答

慕丝7291255

老哥你 a 里面没有 3,怎么期望输出 3。  const flat = l1Arr => [].concat(...l1Arr)  const iter = arr =>    flat(arr.map(      i => i.k          ? iter(i.k).map(j => i.name + '-' + j)          : i.name    ))  const output = iter(a)  console.log(output)// [ '名称0-名称1-名称2-名称4', '名称0-名称1-名称2-名称5', '名称00-名称11-名称22-名称44' ]

达令说

兄弟你可以先将JSON数据转化为 对象 var a = JSON.parse(a); , 函数体内部利用for(var k in obj)去做,但是要加个判断条件你因为你是你序输出的所以你的颠倒一下,这里可以利用reverse来颠倒,里面的用递归!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript