如何递归tree结构数据。
就是这样的 ,我需要的是给我一个名字,比如总经办,我找到这个无限层级里面对应的位置,在这个对象中添加两个字段。
baseDataBm: [
{
title: "集团总部",
expand: false, //是否展开子级
children: [
{
title: "男科事业部",
},
{
title: "总经办",
},
{
title: "院内营销网络",
},
],
},
{
title: "客服",
expand: false, //是否展开子级
children: [
{
title: "客服关系管理",
},
],
},
],
递归 遍历
let baseDataBm = [
{
title: "集团总部",
expand: false, //是否展开子级
children: [
{
title: "男科事业部",
},
{
title: "总经办",
},
{
title: "院内营销网络",
},
],
},
{
title: "客服",
expand: false, //是否展开子级
children: [
{
title: "客服关系管理",
},
],
},
];
function addFieldsToNode(node, targetName) {
node.map((item) => {
if (item.title == targetName) {
//这里 加字段
item.v = "xxx"
}
if (item.children && item.children.length > 0) {
addFieldsToNode(item.children, targetName);
}
})
}
// 调用递归函数
addFieldsToNode(baseDataBm, "总经办");
console.log(baseDataBm)
{
path: '/',
alias: '/homee',
name: 'Home',
component: Layout,
children: [
{
path: 'folder_tree',
component: () => import('@/views/folder-tree/folder-tree.vue')
}
]
}
export const getFolderList = () => {
return axios.request({
url: '/getFolderList',
method: 'get'
})
}
export const getFileList = () => {
return axios.request({
url: '/getFileList',
method: 'get'
})
}
//文件数据
export const getFileList = () => {
const template = {
'name|5': '@cword',
'creat_time': '@datetime',
'folder_id|1-5': 0,
'id|+1': 10000
}
let arr = []
doCustomTimes(10, () => {
arr.push(Mock.mock(template))
})
return arr
}
//文件夹数据
export const getFolderList = () => {
const template1 = {
'name|1': '@word',
'creat_time': '@datetime',
'folder_id': 0,
'id|+1': 1
}
const template2 = {
'name|1': '@word',
'creat_time': '@datetime',
'folder_id': 1,
'id|+1': 4
}
let arr = []
doCustomTimes(3, () => {
arr.push(Mock.mock(template1))
})
doCustomTimes(2, () => {
arr.push(Mock.mock(template2))
})
return arr
}
import Mock from 'mockjs'
// import { getUserInfo, login, authorization } from './response/user'
import { getTableData, getFileList, getFolderList } from './response/data'
// const Random = Mock.Random
// Mock.mock(/\/getUserInfo/, 'post', getUserInfo)
// Mock.mock(/\/login/, 'post', login)
// Mock.mock(/\/authorization/, 'get', authorization)
Mock.mock(/\/getTableData/, 'get', getTableData)
Mock.mock(/\/getFileList/, 'get', getFileList)
Mock.mock(/\/getFolderList/, 'get', getFolderList)
// Mock.setup({
// timeout: 0
// })
// Random.extend({
// fruit () {
// const fruit = ['apple', 'peach', 'lemon']
// return this.pick(fruit)
// }
// })
export default Mock