猿问

像这种数据格式如何递归

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'

    }]

}]


慕哥9229398
浏览 409回答 2
2回答

人到中年有点甜

这需求改的和之前差的很大哦...这个答案是应之前的需求:返回所有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'      }]    }]  }];}

温温酱

let arr = [{    role: 'admin',    left: 'fzz',    children: [{        role: 'other',        right: 'pdd',        children: [{            role: 'admin'        }]    }] }]arr.find(function(x){    return x.role ==='admin';})
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答