利用递归方法:app
1.数据格式一 ARRthis
var ARR = [ { content: { id: 10, parentId: -1, name: '红色', code: 'red' }, children: [ { content: { id: 11, parentId: 10, name: '红苹果', code: 'red.apple' }, children: [] }, { content: { id: 12, parentId: 10, name: '红火龙果', code: 'red.pitaya' }, children: [] }, { content: { id: 13, parentId: 10, name: '红樱桃', code: 'red.cherry' }, children: [] } ] }, { content: { id: 20, parentId: -1, name: '绿色', code: 'green' }, children: [ { content: { id: 21, parentId: 20, name: '绿枣', code: 'green.jujube' }, children: [] }, { content: { id: 22, parentId: 20, name: '绿柠檬', code: 'green.lemon' }, children: [] } ] }, { content: { id: 30, parentId: -1, name: '黄色', code: 'yellow' }, children: [] } ]
2.数据格式二 BRRcode
var BRR = [ { id: 10, parentId: -1, name: '红色', code: 'red', children: [ { id: 11, parentId: 10, name: '红苹果', code: 'red.apple', children: [] }, { id: 12, parentId: 10, name: '红火龙果', code: 'red.pitaya', children: [] }, { id: 13, parentId: 10, name: '红樱桃', code: 'red.cherry', children: [] } ] }, { id: 20, parentId: -1, name: '绿色', code: 'green', children: [ { id: 21, parentId: 20, name: '绿枣', code: 'green.jujube', children: [] }, { id: 22, parentId: 20, name: '绿柠檬', code: 'green.lemon', children: [] } ] }, { id: 30, parentId: -1, name: '黄色', code: 'yellow', children: [] } ]
3.目的:将ARR数据格式转换为BRR数据格式递归
methods: { getMemberTable() { getPermission().then(res => { let ARR = res.data.content var CRR = [] this.fn(ARR, CRR) console.log('ARR:', ARR) console.log('CRR:', CRR) this.dataList = CRR console.log('dataList:', this.dataList) }) }, fn(data, newArr) { // console.log('data1:', data) // console.log('newArr1:', newArr) data.forEach((item, index) => { newArr[index] = item.content newArr[index].children = item.children if (item.children == []) return this.fn(item.children, newArr[index].children) }) }, }
4.注:若有多处需转换,可将fn注册到全局get