vue深度優(yōu)先遍歷多層數(shù)組對象方式(相當于多棵樹、三級樹)
深度優(yōu)先遍歷多層數(shù)組對象
這個方法如果是對于下面的三級樹的話可以拿到爺爺Id,自己Id,父親Id;其實如果想要拿到label的話就把data.id換成data.label就行了
function treeFindPath(tree, func, path = []) {
? ? ? ? if (!tree) return []
? ? ? ? for (const data of tree) {
? ? ? ? ? path.push(data.id)
? ? ? ? ? if (func(data)) return path
? ? ? ? ? if (data.children) {
? ? ? ? ? ? const findChildren = treeFindPath(data.children, func, path)
? ? ? ? ? ? if (findChildren.length) return findChildren
? ? ? ? ? }
? ? ? ? ? path.pop()
? ? ? ? }
? ? ? ? return []
? ? ? }
? ? ? const i = treeFindPath(this.treeData, node => node.label === result)比如樹結(jié)構(gòu)是這樣的
這相當于是多可三級樹
?"data": [
? ? {
? ? ? "id": "1",
? ? ? "label": "能動中心",
? ? ? "type": "1",
? ? ? "children": [
? ? ? ? {
? ? ? ? ? "id": "11",
? ? ? ? ? "label": "罐底視頻",
? ? ? ? ? "type": "2",
? ? ? ? ? "children": [
? ? ? ? ? ? {
? ? ? ? ? ? ? "id": "111",
? ? ? ? ? ? ? "type": "3",
? ? ? ? ? ? ? "label": "四高爐6道"
? ? ? ? ? ? },
? ? ? ? ? ? {
? ? ? ? ? ? ? "id": "112",
? ? ? ? ? ? ? "type": "3",
? ? ? ? ? ? ? "label": "西渣罐底"
? ? ? ? ? ? }
? ? ? ? ? ]
? ? ? ? },
? ? ? ? {
? ? ? ? ? "id": "12",
? ? ? ? ? "label": "煤氣柜站",
? ? ? ? ? "type": "2",
? ? ? ? ? "children": [
? ? ? ? ? ? {
? ? ? ? ? ? ? "id": "121",
? ? ? ? ? ? ? "type": "3",
? ? ? ? ? ? ? "label": "13號道口02"
? ? ? ? ? ? },
? ? ? ? ? ? {
? ? ? ? ? ? ? "id": "122",
? ? ? ? ? ? ? "type": "3",
? ? ? ? ? ? ? "label": "13號道口01"
? ? ? ? ? ? },
? ? ? ? ? ? {
? ? ? ? ? ? ? "id": "123",
? ? ? ? ? ? ? "type": "3",
? ? ? ? ? ? ? "label": "能動中心樓頂"
? ? ? ? ? ? }
? ? ? ? ? ]
? ? ? ? },
? ? ? ? {
? ? ? ? ? "id": "13",
? ? ? ? ? "label": "能動中心樓頂",
? ? ? ? ? "type": "2",
? ? ? ? ? "children": [
? ? ? ? ? ? {
? ? ? ? ? ? ? "id": "131",
? ? ? ? ? ? ? "type": "3",
? ? ? ? ? ? ? "label": "44455666"
? ? ? ? ? ? }
? ? ? ? ? ]
? ? ? ? }
? ? ? ]
? ? },
? ? {
? ? ? "id": "2",
? ? ? "label": "煉鐵廠",
? ? ? "type": "1",
? ? ? "children": [
? ? ? ? {
? ? ? ? ? "id": "21",
? ? ? ? ? "label": "星云智聯(lián)",
? ? ? ? ? "type": "2",
? ? ? ? ? "children": [
? ? ? ? ? ? {
? ? ? ? ? ? ? "id": "211",
? ? ? ? ? ? ? "type": "3",
? ? ? ? ? ? ? "label": "程控樓3樓"
? ? ? ? ? ? },
? ? ? ? ? ? {
? ? ? ? ? ? ? "id": "212",
? ? ? ? ? ? ? "type": "3",
? ? ? ? ? ? ? "label": "程控樓1樓過道西側(cè)"
? ? ? ? ? ? },
? ? ? ? ? ? {
? ? ? ? ? ? ? "id": "213",
? ? ? ? ? ? ? "type": "3",
? ? ? ? ? ? ? "label": "程控樓2樓大廳"
? ? ? ? ? ? },
? ? ? ? ? ? {
? ? ? ? ? ? ? "id": "214",
? ? ? ? ? ? ? "type": "3",
? ? ? ? ? ? ? "label": "公司主樓5樓西側(cè)"
? ? ? ? ? ? }
? ? ? ? ? ]
? ? ? ? },
? ? ? ? {
? ? ? ? ? "id": "22",
? ? ? ? ? "label": "翻車機溜車線區(qū)域",
? ? ? ? ? "type": "2",
? ? ? ? ? "children": [
? ? ? ? ? ? {
? ? ? ? ? ? ? "id": "221",
? ? ? ? ? ? ? "type": "3",
? ? ? ? ? ? ? "label": "煉鋼球罐全貌1"
? ? ? ? ? ? }
? ? ? ? ? ]
? ? ? ? },
? ? ? ? {
? ? ? ? ? "id": "23",
? ? ? ? ? "label": "焦化化產(chǎn)作業(yè)區(qū)",
? ? ? ? ? "type": "2",
? ? ? ? ? "children": [
? ? ? ? ? ? {
? ? ? ? ? ? ? "id": "231",
? ? ? ? ? ? ? "type": "3",
? ? ? ? ? ? ? "label": "4#萬立儲槽全貌"
? ? ? ? ? ? },
? ? ? ? ? ? {
? ? ? ? ? ? ? "id": "232",
? ? ? ? ? ? ? "type": "3",
? ? ? ? ? ? ? "label": "4#萬立中壓氧壓機"
? ? ? ? ? ? },
? ? ? ? ? ? {
? ? ? ? ? ? ? "id": "233",
? ? ? ? ? ? ? "type": "3",
? ? ? ? ? ? ? "label": "4#萬立變電所低壓室"
? ? ? ? ? ? }
? ? ? ? ? ]
? ? ? ? }
? ? ? ]
? ? },
? ? {
? ? ? "id": "3",
? ? ? "label": "煉鋼廠",
? ? ? "type": "1",
? ? ? "children": [
? ? ? ? {
? ? ? ? ? "id": "31",
? ? ? ? ? "label": "熔融金屬及吊運區(qū)域",
? ? ? ? ? "type": "2",
? ? ? ? ? "children": [
? ? ? ? ? ? {
? ? ? ? ? ? ? "id": "311",
? ? ? ? ? ? ? "type": "3",
? ? ? ? ? ? ? "label": "8號吊點鞍馬座"
? ? ? ? ? ? },
? ? ? ? ? ? {
? ? ? ? ? ? ? "id": "312",
? ? ? ? ? ? ? "type": "3",
? ? ? ? ? ? ? "label": "8號起吊點右"
? ? ? ? ? ? }
? ? ? ? ? ]
? ? ? ? },
? ? ? ? {
? ? ? ? ? "id": "32",
? ? ? ? ? "label": "區(qū)域監(jiān)控",
? ? ? ? ? "type": "2",
? ? ? ? ? "children": [
? ? ? ? ? ? {
? ? ? ? ? ? ? "id": "321",
? ? ? ? ? ? ? "type": "3",
? ? ? ? ? ? ? "label": "測試點33"
? ? ? ? ? ? },
? ? ? ? ? ? {
? ? ? ? ? ? ? "id": "322",
? ? ? ? ? ? ? "type": "3",
? ? ? ? ? ? ? "label": "原料跨1"
? ? ? ? ? ? },
? ? ? ? ? ? {
? ? ? ? ? ? ? "id": "323",
? ? ? ? ? ? ? "type": "3",
? ? ? ? ? ? ? "label": "板坯LH釩鐵柜"
? ? ? ? ? ? }
? ? ? ? ? ]
? ? ? ? },
? ? ? ? {
? ? ? ? ? "id": "33",
? ? ? ? ? "label": "罐號識別",
? ? ? ? ? "type": "2",
? ? ? ? ? "children": [
? ? ? ? ? ? {
? ? ? ? ? ? ? "id": "331",
? ? ? ? ? ? ? "type": "3",
? ? ? ? ? ? ? "label": "修罐間東頭"
? ? ? ? ? ? }
? ? ? ? ? ]
? ? ? ? }
? ? ? ]
? ? },
? ? {
? ? ? "id": "4",
? ? ? "label": "冷軋廠",
? ? ? "type": "1",
? ? ? "children": [
? ? ? ? {
? ? ? ? ? "id": "41",
? ? ? ? ? "label": "軋鋼作業(yè)區(qū)",
? ? ? ? ? "type": "2",
? ? ? ? ? "children": [
? ? ? ? ? ? {
? ? ? ? ? ? ? "id": "411",
? ? ? ? ? ? ? "type": "3",
? ? ? ? ? ? ? "label": "軋機主控室"
? ? ? ? ? ? }
? ? ? ? ? ]
? ? ? ? },
? ? ? ? {
? ? ? ? ? "id": "42",
? ? ? ? ? "label": "普冷作業(yè)區(qū)",
? ? ? ? ? "type": "2",
? ? ? ? ? "children": [
? ? ? ? ? ? {
? ? ? ? ? ? ? "id": "421",
? ? ? ? ? ? ? "type": "3",
? ? ? ? ? ? ? "label": "原料庫1"
? ? ? ? ? ? },
? ? ? ? ? ? {
? ? ? ? ? ? ? "id": "422",
? ? ? ? ? ? ? "type": "3",
? ? ? ? ? ? ? "label": "原料庫2"
? ? ? ? ? ? }
? ? ? ? ? ]
? ? ? ? },
? ? ? ? {
? ? ? ? ? "id": "43",
? ? ? ? ? "label": "鍍鋅作業(yè)區(qū)",
? ? ? ? ? "type": "2",
? ? ? ? ? "children": [
? ? ? ? ? ? {
? ? ? ? ? ? ? "id": "431",
? ? ? ? ? ? ? "type": "3",
? ? ? ? ? ? ? "label": "生產(chǎn)運行檢測"
? ? ? ? ? ? },
? ? ? ? ? ? {
? ? ? ? ? ? ? "id": "432",
? ? ? ? ? ? ? "type": "3",
? ? ? ? ? ? ? "label": "軋機高壓室"
? ? ? ? ? ? }
? ? ? ? ? ]
? ? ? ? },
? ? ? ? {
? ? ? ? ? "id": "44",
? ? ? ? ? "label": "點檢維護作業(yè)區(qū)",
? ? ? ? ? "type": "2",
? ? ? ? ? "children": [
? ? ? ? ? ? {
? ? ? ? ? ? ? "id": "441",
? ? ? ? ? ? ? "type": "3",
? ? ? ? ? ? ? "label": "退火爐4"
? ? ? ? ? ? },
? ? ? ? ? ? {
? ? ? ? ? ? ? "id": "442",
? ? ? ? ? ? ? "type": "3",
? ? ? ? ? ? ? "label": "退火爐1"
? ? ? ? ? ? }
? ? ? ? ? ]
? ? ? ? }
? ? ? ]
? ? }
? ]vue遍歷包含數(shù)組的對象
最近開發(fā)自己博客,在遍歷對象類型數(shù)據(jù)時候,怎么也拿不到,嘗試過兩層遍歷都不行,最終利用巧計解決了,記錄下來:
請求來拿到后數(shù)據(jù)格式是下面這種
data(){
? ? return{
? ? ? noticeList:{
? ? ? ? notice:["aaaaa","bbbb","cccc"],
? ? ? ? times:[1564707990252,1564708337658,1564707990252]
? ? ? },
? ? }
? },最終在html中這樣遍歷
<li v-for="(text,index) in noticeList.notice" :key="index">
? {{text}}<span>{{noticeList.times[index] | formatDate}}</span>
</li>最重要的一點是要對象中兩個數(shù)組的index對應的值是相對應的值。遍歷對象中其中一個數(shù)組,另外一個數(shù)組用遍歷過程中的index來獲取其中對應的值,非常巧妙的一個辦法。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
vue2.0和mintui-infiniteScroll結(jié)合如何實現(xiàn)無線滾動加載
這篇文章主要介紹了vue2.0和mintui-infiniteScroll結(jié)合如何實現(xiàn)無線滾動加載,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-10-10
vue用Object.defineProperty手寫一個簡單的雙向綁定的示例
這篇文章主要介紹了用Object.defineProperty手寫一個簡單的雙向綁定的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-07-07
解決Vue.js父組件$on無法監(jiān)聽子組件$emit觸發(fā)事件的問題
今天小編就為大家分享一篇解決Vue.js父組件$on無法監(jiān)聽子組件$emit觸發(fā)事件的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09
Vue+Openlayer實現(xiàn)圖形的拖動和旋轉(zhuǎn)變形效果
Openlayer具有自己的擴展插件ol-ext,可以用來實現(xiàn)圖形的拖拽、旋轉(zhuǎn)、縮放、拉伸、移動等操作,本文將主要介紹通過Openlayer實現(xiàn)圖形的拖動和旋轉(zhuǎn),需要的同學可以學習一下2021-11-11
vue3.0 CLI - 2.4 - 新組件 Forms.vue 中學習表單
這篇文章主要介紹了vue3.0 CLI - 2.4 - 新組件 Forms.vue 中學習表單的相關知識,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下2018-09-09
基于vue和bootstrap實現(xiàn)簡單留言板功能
這篇文章主要為大家詳細介紹了基于vue和bootstrap實現(xiàn)簡單留言板功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-05-05
解決vue router使用 history 模式刷新后404問題
這篇文章主要介紹了解決vue router使用 history 模式刷新后404問題,需要的朋友可以參考下2017-07-07

