JS樹形結(jié)構(gòu)根據(jù)id獲取父級(jí)節(jié)點(diǎn)元素的示例代碼
封裝函數(shù)
// 傳入 id、樹形結(jié)構(gòu)數(shù)據(jù)
export function getParentTree(id, tree) {
let arr = [] //要返回的數(shù)組
for (let i = 0; i < tree.length; i++) {
let item = tree[i]
arr = []
arr.push(item) //保存當(dāng)前節(jié)點(diǎn)id
if (id== item.id) {
//判斷當(dāng)前id是否是默認(rèn)id
return arr //是則退出循環(huán)、返回?cái)?shù)據(jù)
} else {
//否則進(jìn)入下面判斷,判斷當(dāng)前節(jié)點(diǎn)是否有子節(jié)點(diǎn)數(shù)據(jù)
if (item.children && item.children.length > 0) {
//合并子節(jié)點(diǎn)返回的數(shù)據(jù)
arr = arr.concat(getParentTree(id, item.children ? item.children : []))
console.log(arr)
if (arr.map(item2 => (item2 ? item2.id : '')).includes(id)) {
//如果當(dāng)前數(shù)據(jù)中已包含默認(rèn)節(jié)點(diǎn),則退出循環(huán)、返回?cái)?shù)據(jù)
return arr
}
}
}
}調(diào)用函數(shù)
const treeData = [{
name: '1',
id: 1,
children: [{
name: '1-1',
id: 2,
children: [{
name: '1-1-1',
id: 4,
}],
name: '1-2',
id: 3,
children: [{
name: '1-2-1',
id: 5,
}],
}]
},{
name: '2',
id: 6,
children: [{
name: '2-1',
id: 7,
children: [{
name: '2-1-1',
id: 9,
}],
name: '2-2',
id: 8,
children: [{
name: '2-2-1',
id: 10,
}],
}]
}]
console.log(getParentTree(5, treeData))到此這篇關(guān)于JS樹形結(jié)構(gòu)根據(jù)id獲取父級(jí)節(jié)點(diǎn)元素的文章就介紹到這了,更多相關(guān)js獲取父級(jí)節(jié)點(diǎn)元素內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JS中將blob返回值轉(zhuǎn)換為json格式的問題小結(jié)
這篇文章主要介紹了JS中如何將blob返回值轉(zhuǎn)換為json格式,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-12-12
js 數(shù)組當(dāng)前行添加數(shù)據(jù)方法詳解
這篇文章主要介紹了js 數(shù)組當(dāng)前行添加數(shù)據(jù)方法詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
Ajax+FormData+javascript實(shí)現(xiàn)無刷新表單信息提交
在前端開發(fā)中ajax,formdata和js實(shí)現(xiàn)無刷新表單信息提交非常棒,接下來通過本文給大家介紹Ajax+FormData+javascript實(shí)現(xiàn)無刷新表單信息提交的相關(guān)資料,需要的朋友可以參考下2016-10-10
js為數(shù)字添加逗號(hào)并格式化數(shù)字的代碼
數(shù)字添加逗號(hào)的方法有很多,在本將為大家介紹下使用js來實(shí)現(xiàn),具體如下,感興趣的朋友可以參考下,希望對(duì)大家有所幫助2013-08-08
JS實(shí)現(xiàn)簡(jiǎn)單的浮動(dòng)碰撞效果示例
這篇文章主要介紹了JS實(shí)現(xiàn)簡(jiǎn)單的浮動(dòng)碰撞效果,類似于廣告懸浮圖片在屏幕上來回碰撞的效果,涉及javascript結(jié)合時(shí)間動(dòng)態(tài)操作頁(yè)面元素屬性的相關(guān)技巧,需要的朋友可以參考下2017-12-12
ElementUI table無縫循環(huán)滾動(dòng)的示例代碼
這篇文章主要介紹了ElementUI table無縫循環(huán)滾動(dòng)的示例代碼,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08

