最近使用element的樹形結構,想着就寫點小東西,好比要獲取樹形結構葉子節點的全部屬性,你們都知道,當樹形結構的層級比較多的時候,若是經過普通的循環是解決不了的,我決定用遞歸實現比較好的選擇,在工具函數中封裝了這樣一個方法。數組
直接上代碼函數
// 獲取全部葉子節點指定屬性,arr格式與樹形結構一致的數組;name爲所要獲取的屬性名,可不傳,默認爲id;
childName爲子節點集合的屬性名,可不傳,默認爲children;
export const getAllNode = (arr, name, childName) => {
let str = ''
const arrs = []
if (!arr) {
return
}
if (!name) {
name = 'id'
}
if (!childName) {
childName = 'children'
}
const getChild = (arr) => {
for (let i = 0; i < arr.length; i++) {
arrs.push(arr[i][name])
if (arr[i][childName] && arr[i][childName].length > 0) {
getChild(arr[i].children)
}
}
str = arrs.join()
return str
}
return getChild(arr)
}
複製代碼
直接在須要的地方引入該文件,而後直接調用該方法就能夠了,仍是比較簡單!若是你們還有更好的方法,但願一塊兒分享!工具