var json: {
PRow0: {
style: {
width: 10
}
},
PTable1: {
style: {
height: 20
}
}
} const jsonToArrTree = (json) => {
let data = Object.keys(json).map( (item) => {
let ops = {
title:item,
key:nanoid(),
children:[]
}
let child = json[item]
if(typeof child == "object" && Object.keys(child).length > 0){
ops.children = jsonToArrTree(child)
}
return ops
})
return data
}

转换结果
[
{
"title": "PRow0",
"key": "LzgVGHyEkwyUAUVOSOt_u",
"children": [
{
"title": "style",
"key": "0KNgtu0C4Cg_8QalqAcTm",
"children": [
{
"title": "width",
"key": "jN4HAiWnfFXNz4csrtEQz",
"children": []
}
]
}
]
},
{
"title": "PTable1",
"key": "Y4i4tq8C12rXbH_GBtAXl",
"children": [
{
"title": "style",
"key": "2bD_q7ZfEu3yZILLsUfSn",
"children": [
{
"title": "height",
"key": "OOg79AeMP-BQoDmF7wzlX",
"children": []
}
]
}
]
}
]

  

每个字段都是上一级父级字段的拼接

let pre = ''
const jsonToArrTree = (json) => {
let data = Object.keys(json).map( (item) => {
pre += (pre ? '.':'') + item
let ops = {
title:pre,
key:nanoid(),
children:[]
}
let child = json[item]
console.log(pre)
if(typeof child == "object" && Object.keys(child).length > 0){
ops.children = jsonToArrTree(child)
}
return ops
})
pre = ''
return data
}

深层对象转深层数组(重点:先把对象转数组,直接for in 遍历对象不太可行)的更多相关文章

  1. 辨析js遍历对象与数组的方法

    1     遍历对象的方法? (1) for-in(也可遍历数组,但效率较低,一般用来遍历对象) 示例: // 生成一个原型上有属性并且有可枚举属性与不可枚举属性的对象 const data = Ob ...

  2. 关于javascript遍历对象

    1:遍历对象属性var obj={a:'aa',b:'bb'} for(var i in obj) { alert(i); //输出 a b } var obj={'a':'aa','b':'bb'} ...

  3. JS遍历对象的属性和值

    对于需要动态获取对象的某些属性和对应的值的时候,就需要遍历对象的属性和值. const user = { name: '张三', age: 20, addr: '湖北武汉', sex: '男' } / ...

  4. Spring_day01--注入对象类型属性(重点)_P名称空间注入_注入复杂类型属性_IOC和DI区别_Spring整合web项目原理

    注入对象类型属性(重点) Action要new一个service对象,Service中又要new一个Dao对象,现在把new的过程交给spring来操作 1 创建service类和dao类 (1)在s ...

  5. [原创]java WEB学习笔记59:Struts2学习之路---OGNL,值栈,读取对象栈中的对象的属性,读取 Context Map 里的对象的属性,调用字段和方法,数组,list,map

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  6. jquery遍历对象,数组,集合

    1.jquery 遍历对象 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTM ...

  7. jquery中each遍历对象和数组示例

    通用遍历方法,可用于遍历对象和数组.$().each(),回调函数拥有两个参数: 第一个为对象的成员或数组的索引,第二个为对应变量或内容.如需退出each循环可使回调函数返回false 现有如下两个s ...

  8. jQuery遍历对象、数组、集合实例

    1.jquery 遍历对象 复制代码代码如下:   <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" ...

  9. JS遍历对象或者数组

    一.纯js实现 <script> var obj = {"player_id":"GS001","event_id":" ...

  10. JavaScript遍历对象4种方法和遍历数组的3种方式 代码

    //遍历对象 4种方法 //Object.keys(obj).forEach() console.log("keys...遍历</br>") var obj1 = { ...

随机推荐

  1. c++ templat乱测

    该上机实验环境 linux mint  IDE:qt5.11   代码复制到windows下vs2017报错,提示char* 类型不能直接赋值字符串 在linux mint下可以运行,测试目的:检验复 ...

  2. 2019 icpc 徐州 解题报告

    A.Cat 题库链接 给定区间[l,r],求一个最长子区间,使得区间异或和小于等于s,(结论)偶数和偶数后三个数的异或和等于0 #include <bits/stdc++.h> using ...

  3. Hadoop上 Hive 操作

    数据dept表的准备: --创建dept表 CREATE TABLE dept( deptno int, dname string, loc string) ROW FORMAT DELIMITED ...

  4. linux学习7 Linux文件系统功能和作用详解

    一.终端 1.用户界面 GUI: GNome KDE CLI: bash,zsh,sh,csh,tcsh,ksh 2.远程连接 a.ssh协议. 查看系统是否监听于tcp协议的22号端口: ss  - ...

  5. YAML_08 handlers触发器

    ansible]# vim adhttp.yml --- - hosts: cache   remote_user: root   tasks:     - copy:         src: /r ...

  6. 代码格式化工具---indent工具

    indent工具,可以把代码格式化成某种风格. 通过命令:rpm -qa | grep indent 查看是否安装了indent工具. 若没有,可使用命令sudo apt-get  install   ...

  7. 如何在Eclipse中写Processing的sketch

    有时候人们需要写更复杂的sketch,此时Processing提供的IDE就略显单薄,下面将介绍如何在eclipse中开发Processing. 一共分4步: 一.搭建环境:安装JRE.JDK.Ecl ...

  8. CLion201914 下载安装

    链接:https://pan.baidu.com/s/12Gzo8gL3iUFoL5wok6L_BQ  密码:7vw4 56ZS5PQ1RF-eyJsaWNlbnNlSWQiOiI1NlpTNVBRM ...

  9. Linux之字符串截取

    获取字符串的长度 在 Shell 中获取字符串长度很简单,具体方法如下: ${#string_name} string_name 表示字符串名字. root@master:~# b="ma ...

  10. [Shell]Telnet反弹shell

    原作者:包子love 文章出处:黑白之道 今天给大家介绍两种telnet反弹shell的方法,相对于其他方式反弹shell要简单一点,可作为按需远程控制或留后门使用,希望可以帮助到大家. 前提条件:目 ...