zoukankan      html  css  js  c++  java
  • 深层对象转深层数组(重点:先把对象转数组,直接for in 遍历对象不太可行)

    var json: {
                PRow0: { 
                    style: { 
                         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 }
  • 相关阅读:
    INSERT
    jQuery选择器
    工厂模式
    快乐的Linux命令行
    Linux常用命令与基本概念
    RAC 集群更换IP
    RMAN-03009 ORA-19504 ORA-27038
    Redhat 6.4_联网 yum 配置
    /dev/sda3: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY
    nginx安装笔记
  • 原文地址:https://www.cnblogs.com/winyh/p/11772891.html
Copyright © 2011-2022 走看看