js 数组 转为树形结构

翼

2021-01-21

2577 1 0

需要转换为树形的数组

1 var data = [ 2 { 3 "orderById":null, 4 "platformCommissionProportion":1, 5 "name":"添加剂", 6 "pid":13, 7 "id":26, 8 "state":"1" 9 }, 10 { 11 "orderById":null, 12 "platformCommissionProportion":1, 13 "name":"药食同源", 14 "pid":13, 15 "id":25, 16 "state":"1" 17 }, 18 { 19 "orderById":null, 20 "platformCommissionProportion":1, 21 "name":"特殊食品", 22 "pid":13, 23 "id":24, 24 "state":"1" 25 }, 26 { 27 "orderById":null, 28 "platformCommissionProportion":1, 29 "name":"进口食品", 30 "pid":13, 31 "id":23, 32 "state":"1" 33 }, 34 { 35 "orderById":null, 36 "platformCommissionProportion":1, 37 "name":"新资源食品", 38 "pid":13, 39 "id":22, 40 "state":"1" 41 }, 42 { 43 "orderById":null, 44 "platformCommissionProportion":1, 45 "name":"绿色有机", 46 "pid":13, 47 "id":21, 48 "state":"1" 49 }, 50 { 51 "orderById":null, 52 "platformCommissionProportion":1, 53 "name":"食品检验检测", 54 "pid":12, 55 "id":20, 56 "state":"1" 57 }, 58 { 59 "orderById":null, 60 "platformCommissionProportion":1, 61 "name":"标签审核", 62 "pid":11, 63 "id":19, 64 "state":"1" 65 }, 66 { 67 "orderById":null, 68 "platformCommissionProportion":1, 69 "name":"法律服务", 70 "pid":3, 71 "id":18, 72 "state":"1" 73 }, 74 { 75 "orderById":null, 76 "platformCommissionProportion":1, 77 "name":"案件咨询", 78 "pid":3, 79 "id":17, 80 "state":"1" 81 }, 82 { 83 "orderById":null, 84 "platformCommissionProportion":1, 85 "name":"食品餐饮许可", 86 "pid":2, 87 "id":16, 88 "state":"1" 89 } 90 ]

转换方法

1/** 2 * 树形数据转换 3 * @param {*} data 4 * @param {*} id 5 * @param {*} pid 6 */ 7export function treeDataTranslate (data, id = 'id', pid = 'pid') { 8 var res = [] 9 var temp = {} 10 for (var i = 0; i < data.length; i++) { 11 temp[data[i][id]] = data[i] 12 } 13 for (var k = 0; k < data.length; k++) { 14 if (temp[data[k][pid]] && data[k][id] !== data[k][pid]) { 15 if (!temp[data[k][pid]]['children']) { 16 temp[data[k][pid]]['children'] = [] 17 } 18 if (!temp[data[k][pid]]['_level']) { 19 temp[data[k][pid]]['_level'] = 1 20 } 21 data[k]['_level'] = temp[data[k][pid]]._level + 1 22 temp[data[k][pid]]['children'].push(data[k]) 23 } else { 24 res.push(data[k]) 25 } 26 } 27 return res 28}

使用方法

1// 引入上方的方法 2import { treeDataTranslate } from '@/utils/myUtils' 3 4treeDataTranslate(data)

image.png

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java将前端的json数组字符串转换为列表

记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang

SpringBoot自定义序列化的使用方式

场景及需求:项目接入了SpringBoot开发,现在需求是服务端接口返回的字段如果为空,那么自动转为空字符串。例如:\    {        "id":1,        "name":null    },    {        "id":2,        "name":"x

JS 对象数组Array 根据对象object key的值排序sort,很风骚哦

有个js对象数组varary\{id:1,name:"b"},{id:2,name:"b"}\需求是根据name或者id的值来排序,这里有个风骚的函数函数定义:function keysrt(key,desc) {  return function(a,b){    return desc ? ~~(ak