如題所示,目前獲取到的數(shù)據(jù)是多層樹形結(jié)構(gòu),每一層都有自己的children,如何才能獲取到最后一層的children對其進行處理,將數(shù)據(jù)進行過濾,處理后的數(shù)據(jù)最后一層只有阿凡達這一組,如第二組數(shù)據(jù)那樣 ,層數(shù)是不固定的,求大佬們指點如何處理該種數(shù)據(jù)?
// 請把代碼文本粘貼到下方(請勿用圖片代替代碼)
修改前:
[{
"code": "001",
"agyTypeCode": "2",
"children": [{
"code": "001001",
"agyTypeCode": "1",
"children": [{
"code": "001001001",
"agyTypeCode": "1",
"children": [{
"finChfName": "阿拉爾",
"isPairAc": 1,
"code": "0001",
"name": "政府會計制度(2019)",
"agyCode": "001001001",
"id": "f28dad108fd411e89b13a146c4299200",
"acsCode": "001"
}, {
"finChfName": "阿凡達",
"isPairAc": 0,
"code": "0002",
"name": "政府會計制度",
"agyCode": "001001001",
"id": "e66f85a1907211e88798292b71e6b4b4",
"acsCode": "002"
}, {
"finChfName": "嗯嗯",
"isPairAc": 1,
"code": "0003",
"name": "賬號",
"agyCode": "001001001",
"id": "f0cf4d60963911e8ba520dc161e32ad2",
"acsCode": "001"
}],
"name": "教育局本級",
"pid": "41a9b5c08fd411e89e1bcd37e4564ff2",
"id": "627df2208fd411e89e1bcd37e4564ff2"
}],
"name": "華南教委匯總",
"pid": "0d2ea6c08fd411e89e1bcd37e4564ff2",
"id": "41a9b5c08fd411e89e1bcd37e4564ff2"
}],
"name": "華南大區(qū)匯總",
"pid": "",
"id": "0d2ea6c08fd411e89e1bcd37e4564ff2"
}]
修改后:
[{
"code": "001",
"agyTypeCode": "2",
"children": [{
"code": "001001",
"agyTypeCode": "1",
"children": [{
"code": "001001001",
"agyTypeCode": "1",
"children": [ {
"finChfName": "阿凡達",
"isPairAc": 0,
"code": "0002",
"name": "政府會計制度",
"agyCode": "001001001",
"id": "e66f85a1907211e88798292b71e6b4b4",
"acsCode": "002"
}],
"name": "教育局本級",
"pid": "41a9b5c08fd411e89e1bcd37e4564ff2",
"id": "627df2208fd411e89e1bcd37e4564ff2"
}],
"name": "華南教委匯總",
"pid": "0d2ea6c08fd411e89e1bcd37e4564ff2",
"id": "41a9b5c08fd411e89e1bcd37e4564ff2"
}],
"name": "華南大區(qū)匯總",
"pid": "",
"id": "0d2ea6c08fd411e89e1bcd37e4564ff2"
}]
這種場景使用遞歸解決
function findLastChildrens(arr) {
var result = [];
for(var i in arr) {
var obj = arr[i];
if(!obj.children) {
continue;
}
var findResult = findLastChildrens(obj.children);
if(findResult.length === 0) { //當前children其下再沒有children出現(xiàn),說明當前children是最后一級
result.push(obj.children);
} else { //不是最后一級children的話
result = result.concat(findResult);
}
}
return result;
}
findLastChildrens(arr) //返回你要所有最后一級的children組成的數(shù)組
function processLastChildrens(arr) {
for(var i in arr) {
var obj = arr[i];
if(!obj.children) {
continue;
}
var findResult = processLastChildrens(obj.children);
if(!findResult) { //說明當前children是最后一級
obj.children = obj.children.filter(o=>o.finChfName === '阿凡達');
findResult = true;
}
}
return findResult;
}
var newArr = [].concat(arr); //避免對原數(shù)組產(chǎn)生影響,克隆一個數(shù)組
processLastChildrens(newArr);
console.log(newArr); //打印出你期望的新數(shù)組北大青鳥APTECH成立于1999年。依托北京大學優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達內(nèi)教育集團成立于2002年,是一家由留學海歸創(chuàng)辦的高端職業(yè)教育培訓機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學校辦產(chǎn)業(yè)為響應(yīng)國家深化產(chǎn)教融合/校企合作的政策,積極推進“中國制造2025”,實現(xiàn)中華民族偉大復(fù)興的升級產(chǎn)業(yè)鏈。利用北京大學優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓領(lǐng)域的先行者
曾工作于聯(lián)想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經(jīng)理職務(wù)負責iOS教學及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。