javascript 递归处理多层嵌套数据

jsonSchema:{
  properties:{
    code:{
      description:"业务code"
      required:true
      type:"integer"
    }
    data:{
      description:"详情数据"
      properties:{
        field1:{
          description:"字段1"
          required:false
          type:"string"
        }
        field2:{
          description:"字段2"
          required:true
          type:"integer"
        }
      }
      required:[
        0:"field1"
        1:"field2"
      ]
      type:"object"
    }
    msg:{
      description:"提示信息"
      required:false
      type:"string"
  }
}

这是拿到的数据格式

 jsonSchema:{
        properties:[
            {   
                id:'1',
                name:'code',
                description:"业务code",
                required:true,
                type:"integer"
            },
            {
                id:'2',
                name:'data',
                description:"详情数据",
                properties:[
                    {
                        id:'21',
                        name:'field1',
                        description:"字段1",
                        required:false,
                        type:"string"
                    },
                    {
                        id:'22',
                        name:'field1',
                        description:"字段2",
                        required:true,
                        type:"integer"
                    }
                ],
                required:true,
                type:"object",
            },
            {
                id:'3',
                name:'msg',
                description:"提示信息",
                required:false,
                type:"string"
            }
        ],
        type:"object"
    },

这是组件需要的数据格式,properties每一子集的名字, 不确定数据里面包含多少层 最后效果如图
image.png

阅读 2.1k
1 个回答
const dg = (obj,id)=>{
    const keyList = Object.keys(obj);
    return keyList.map((item,idx)=>({
        id:(id||"")+(idx+1),
        name:item,
        ...obj[item],
        ...(obj[item].properties?{properties:dg(obj[item].properties,(id||"")+(idx+1))}:{})
}))
}

大概这样子 你试试吧 把jsonscheme后面那个对象丢进去

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题