vue3樹(shù)節(jié)點(diǎn)實(shí)現(xiàn)通過(guò)子節(jié)點(diǎn)的parentid找到父節(jié)點(diǎn)數(shù)據(jù)
vue3樹(shù)節(jié)點(diǎn)通過(guò)子節(jié)點(diǎn)的parentid找到父節(jié)點(diǎn)數(shù)據(jù)
在Vue 3中,如果你有一個(gè)樹(shù)形結(jié)構(gòu)的數(shù)據(jù),并且想要通過(guò)子節(jié)點(diǎn)的parentId找到其父節(jié)點(diǎn)數(shù)據(jù),你可以使用遞歸組件或者在組件的方法中實(shí)現(xiàn)遞歸邏輯來(lái)遍歷樹(shù)形數(shù)據(jù)。
以下是一個(gè)簡(jiǎn)單的示例
展示如何在Vue 3組件中實(shí)現(xiàn)這個(gè)功能
<template>
<div>
<!-- 你的組件內(nèi)容 -->
<button @click="findParentNode">Find Parent Node</button>
</div>
</template>
<script>
import { ref } from 'vue';
export default {
setup() {
// 假設(shè)這是你的樹(shù)形數(shù)據(jù)
const treeData = ref([
// ... 你的樹(shù)形數(shù)據(jù)結(jié)構(gòu)
]);
// 要搜索的子節(jié)點(diǎn)的parentId
const childParentId = 7;
// 查找父節(jié)點(diǎn)的函數(shù)
const findParentNode = () => {
function searchParentNode(nodes, parentId) {
for (const node of nodes) {
if (node.parentId === parentId) {
return node; // 返回找到的父節(jié)點(diǎn)
}
if (node.children) {
const parentNode = searchParentNode(node.children, parentId);
if (parentNode) return parentNode; // 如果在子節(jié)點(diǎn)中找到,返回父節(jié)點(diǎn)
}
}
return null; // 如果沒(méi)有找到,返回null
}
const parentNode = searchParentNode(treeData.value, childParentId);
if (parentNode) {
console.log('Parent Node Found:', parentNode);
} else {
console.log('Parent Node Not Found');
}
};
return {
treeData,
findParentNode
};
}
};
</script>在這個(gè)示例
我們首先定義了樹(shù)形數(shù)據(jù)treeData,并且有一個(gè)childParentId變量來(lái)存儲(chǔ)要搜索的子節(jié)點(diǎn)的parentId。
findParentNode方法是一個(gè)點(diǎn)擊事件處理器,它調(diào)用一個(gè)內(nèi)部定義的遞歸函數(shù)searchParentNode。這個(gè)遞歸函數(shù)遍歷樹(shù)形數(shù)據(jù),尋找具有匹配parentId的節(jié)點(diǎn)。如果找到匹配的parentId,它會(huì)返回相應(yīng)的父節(jié)點(diǎn)對(duì)象。
請(qǐng)注意
這個(gè)示例假設(shè)你的樹(shù)形數(shù)據(jù)結(jié)構(gòu)已經(jīng)以某種方式加載到treeData變量中,并且每個(gè)節(jié)點(diǎn)都有一個(gè)parentId屬性,該屬性的值是其父節(jié)點(diǎn)的id。
在實(shí)際應(yīng)用中,你的樹(shù)形數(shù)據(jù)結(jié)構(gòu)可能會(huì)更復(fù)雜,并且可能需要根據(jù)你的具體需求調(diào)整搜索邏輯。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
el-table實(shí)現(xiàn)給每行添加loading效果案例
這篇文章主要介紹了el-table實(shí)現(xiàn)給每行添加loading效果案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08
vue之el-tree懶加載數(shù)據(jù)并且實(shí)現(xiàn)樹(shù)的過(guò)濾問(wèn)題
這篇文章主要介紹了vue之el-tree懶加載數(shù)據(jù)并且實(shí)現(xiàn)樹(shù)的過(guò)濾問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04
vue中改變選中當(dāng)前項(xiàng)的顯示隱藏或者狀態(tài)的實(shí)現(xiàn)方法
下面小編就為大家分享一篇vue中改變選中當(dāng)前項(xiàng)的顯示隱藏或者狀態(tài)的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-02-02
多個(gè)vue項(xiàng)目復(fù)用一個(gè)node_modules的問(wèn)題
這篇文章主要介紹了多個(gè)vue項(xiàng)目復(fù)用一個(gè)node_modules的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09
Vue computed實(shí)現(xiàn)原理深入講解
computed又被稱作計(jì)算屬性,用于動(dòng)態(tài)的根據(jù)某個(gè)值或某些值的變化,來(lái)產(chǎn)生對(duì)應(yīng)的變化,computed具有緩存性,當(dāng)無(wú)關(guān)值變化時(shí),不會(huì)引起computed聲明值的變化。產(chǎn)生一個(gè)新的變量并掛載到vue實(shí)例上去2022-10-10
vue2前端使用axios發(fā)起post請(qǐng)求后端(springboot)接收不到值解決辦法
這篇文章主要介紹了vue2前端使用axios發(fā)起post請(qǐng)求后端(springboot)接收不到值解決辦法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2024-03-03
Vue項(xiàng)目打包后js文件過(guò)大的問(wèn)題解決辦法
在Vue項(xiàng)目中打包體積過(guò)大是一個(gè)常見(jiàn)的問(wèn)題,這篇文章主要給大家介紹了關(guān)于Vue項(xiàng)目打包后js文件過(guò)大的問(wèn)題解決辦法,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-05-05
vue項(xiàng)目中導(dǎo)入swiper插件的方法
這篇文章主要介紹了vue項(xiàng)目中導(dǎo)入swiper插件的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-01-01

