为了账号安全,请及时绑定邮箱和手机立即绑定

js递归返回想要的值

js递归返回想要的值

繁花如伊 2019-03-21 18:15:06
  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']
查看完整描述

3 回答

?
慕丝7291255

TA贡献1859条经验 获得超6个赞

老哥你 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' ]


查看完整回答
反对 回复 2019-04-08
?
达令说

TA贡献1821条经验 获得超6个赞

兄弟你可以先将JSON数据转化为 对象 var a = JSON.parse(a); , 函数体内部利用for(var k in obj)去做,但是要加个判断条件你因为你是你序输出的所以你的颠倒一下,这里可以利用reverse来颠倒,里面的用递归!


查看完整回答
反对 回复 2019-04-08
  • 3 回答
  • 0 关注
  • 585 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信