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

像这种数据格式如何递归

像这种数据格式如何递归

慕哥9229398 2019-03-12 16:13:41
let arr = [{    role: 'admin',    left: 'fzz',    children: [{        role: 'other',        right: 'pdd',        children: [{            role: 'admin'        }]    }] }]像这种数据格式如何递归返回一个数组,数据格式保持不变,但是取出里面role为admin的呢?(包括children里面的数据也要对role进行筛选)如果父级role不是admin,则该级和它的children都丢弃返回:arr = [{    role: 'admin',    left: 'fzz',    children: [{        role: 'admin',        right: 'pdd'    }]}]
查看完整描述

2 回答

?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

这需求改的和之前差的很大哦...

这个答案是应之前的需求:返回所有admin,并且删除children中admin。


getRoles(getData());


function getRoles(data, role = 'admin') {

  let resArr = [];


  main(data);


  return resArr;


  function main(data) {

    if (data && data.length) {

      data.forEach((d, i) => {

        if (d.role === 'admin') resArr.push(data.splice(i, 1));

        if (d.children && d.children.length) main(d.children);

      });

    }

  }

}


function getData() {

  return [{

    role: 'other',

    children: [{

      role: 'admin',

      index: '1'

    }, {

      role: 'other'

    }]

  },{

    role: 'admin',

    index: '2',

    children: [{

      role: 'other',

      children: [{

        role: 'admin',

        index: '3'

      }]

    }]

  }];

}


查看完整回答
反对 回复 2019-03-29
?
温温酱

TA贡献1752条经验 获得超4个赞

let arr = [{

    role: 'admin',

    left: 'fzz',

    children: [{

        role: 'other',

        right: 'pdd',

        children: [{

            role: 'admin'

        }]

    }] 

}]

arr.find(function(x){

    return x.role ==='admin';

})


查看完整回答
反对 回复 2019-03-29
  • 2 回答
  • 0 关注
  • 408 浏览
慕课专栏
更多

添加回答

举报

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