在樹表(帶children的對象數組)操作中,如果刪除的操作是在前端完成(不請求后台,等所有樹表操作完成之后統一保存)的話,就會需要封裝一個刪除樹表節點的邏輯函數。
function removeTreeListItem(treeList, id) { // 根據id屬性從數組(樹結構)中移除元素 if (!treeList || !treeList.length) { return } for (let i = 0; i < treeList.length; i++) { if (treeList[i].id === id) { treeList.splice(i, 1); break; } removeTreeListItem(treeList[i].children, id) } }
在上面封裝的這個函數中,邏輯是通過遍歷treeList中id匹配的對象,並遞歸每個對象children屬性(也是一個對象數組)來完成刪除元素的邏輯。要注意的是,如果某個被刪除的節點下還帶有子節點的話,其下的全部節點會被同步移除,因為這些子節點是作為children屬性掛接在該節點下的。
"刪除我一生中的任何一個瞬間,我都不能成為今天的自己。"