js 多层嵌套的数组,取出最后一层的数据?

需要获取到isCheck=true的所有id的集合
list:[{
id:'1',
isCheck:false,
children:[{
id:'1-1',
isCheck:false,
children:null
},{
id:'1-2',
isCheck:true,
children:null
}]
},{
id:'2',
isCheck:false,
children:[{
id:'2-1',
isCheck:true,
children:null
}]
},{
id:'3',
isCheck:true,
children:null
}]
想到用递归算法,把数组扁平化降级,可是获取到的数据不对,希望获取到数据为
['1-2','2-1','3']
steamroller:function(arr){
letnewArr=[]
letflat=function(item){
for(vari=0;iif(Array.isArray(item[i].children)){
flat(item[i])
}else{
newArr.push(item[i])
}
}
}
flat(arr)
returnnewArr
}
求助求助!
慕婉清6462132
浏览 2308回答 2
2回答

慕容森

constresult=[],getId=arr=>{arr.forEach(v=>{v.isCheck&&result.push(v.id);if(v.childreninstanceofArray){getId(v.children)}});}getId(list);console.log(result)//["1-2","2-1","3"]递归一下
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript