js 数组 转为树形结构

2021-01-21

2574 1 0

需要转换为树形的数组

var data = [ { "orderById":null, "platformCommissionProportion":1, "name":"添加剂", "pid":13, "id":26, "state":"1" }, { "orderById":null, "platformCommissionProportion":1, "name":"药食同源", "pid":13, "id":25, "state":"1" }, { "orderById":null, "platformCommissionProportion":1, "name":"特殊食品", "pid":13, "id":24, "state":"1" }, { "orderById":null, "platformCommissionProportion":1, "name":"进口食品", "pid":13, "id":23, "state":"1" }, { "orderById":null, "platformCommissionProportion":1, "name":"新资源食品", "pid":13, "id":22, "state":"1" }, { "orderById":null, "platformCommissionProportion":1, "name":"绿色有机", "pid":13, "id":21, "state":"1" }, { "orderById":null, "platformCommissionProportion":1, "name":"食品检验检测", "pid":12, "id":20, "state":"1" }, { "orderById":null, "platformCommissionProportion":1, "name":"标签审核", "pid":11, "id":19, "state":"1" }, { "orderById":null, "platformCommissionProportion":1, "name":"法律服务", "pid":3, "id":18, "state":"1" }, { "orderById":null, "platformCommissionProportion":1, "name":"案件咨询", "pid":3, "id":17, "state":"1" }, { "orderById":null, "platformCommissionProportion":1, "name":"食品餐饮许可", "pid":2, "id":16, "state":"1" } ]

转换方法

/** * 树形数据转换 * @param {*} data * @param {*} id * @param {*} pid */ export function treeDataTranslate (data, id = 'id', pid = 'pid') { var res = [] var temp = {} for (var i = 0; i < data.length; i++) { temp[data[i][id]] = data[i] } for (var k = 0; k < data.length; k++) { if (temp[data[k][pid]] && data[k][id] !== data[k][pid]) { if (!temp[data[k][pid]]['children']) { temp[data[k][pid]]['children'] = [] } if (!temp[data[k][pid]]['_level']) { temp[data[k][pid]]['_level'] = 1 } data[k]['_level'] = temp[data[k][pid]]._level + 1 temp[data[k][pid]]['children'].push(data[k]) } else { res.push(data[k]) } } return res }

使用方法

// 引入上方的方法 import { treeDataTranslate } from '@/utils/myUtils' treeDataTranslate(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