SOURCE

let obj = {
    "stepInfo": {
        "companyChannel": [
            "1",
            "2",
            "3"
        ],
        "promotionSteps": [
            {
                "companyFirstChargeAmount": 12,
                "companyFirstChargeAmount1": 333,
                "mainStep": false,
                "returnBcoupon": [
                    {
                        "batchId": "121",
                        "number": 2,
                        "replaceFastCarCoupon": [
                            1
                        ],
                        "fastCarBatchId": "332",
                        "fastCarNumber": 12
                    },
                    {
                        "batchId": "123",
                        "number": 123,
                        "replaceFastCarCoupon": [
                            1
                        ],
                        "fastCarBatchId": "3",
                        "fastCarNumber": 4
                    }
                ],
                "sms": false,
                "push": false
            },
            {},
            {
                "companyFirstChargeAmount": 3,
                "companyFirstChargeAmount1": 122,
                "mainStep": false,
                "returnBcoupon": [
                    {
                        "batchId": "11",
                        "number": 2,
                        "replaceFastCarCoupon": [
                            1
                        ],
                        "fastCarBatchId": "12",
                        "fastCarNumber": 33
                    },
                    {
                        "batchId": "122",
                        "number": 12
                    }
                ],
                "sms": false,
                "push": false
            },
            {},
            {
                "companyFirstChargeAmount": 33,
                "companyFirstChargeAmount1": 121221,
                "mainStep": false,
                "returnBcoupon": false,
                "sms": false,
                "push": false
            },
            {
                "companyFirstChargeAmount": 12,
                "mainStep": false,
                "returnBcoupon": [
                    {
                        "batchId": "33",
                        "number": 12,
                        "replaceFastCarCoupon": [
                            1
                        ],
                        "fastCarBatchId": "12",
                        "fastCarNumber": 33
                    },
                    {
                        "batchId": "44",
                        "number": 12
                    },
                    {
                        "batchId": "4441",
                        "number": 122
                    },
                ],
                "sms": false,
                "push": false
            }
        ],
        "stepCrowdTag": "1001271955",
        "time":[
                "2022-07-13T09:32:30.252Z",
                "2022-07-22T09:32:30.252Z"
            ]
    }
}
const replaceNullProperty = (obj) => {
        for( let i in obj ){//遍历对象中的属性
            if(obj[i] && obj[i].constructor === Object){
                if(JSON.stringify(obj[i]) == "{}"){
                    obj.splice(i,1)
                }
                obj[i]&&Object.keys(obj[i]).map(item=>{
                    if(item == "replaceFastCarCoupon"){
                        obj[i][item] = obj[i][item].join('')
                    }else if(item == "mainStep"){
                         obj[i][item] =  obj[i][item] ? 1 : 0
                    }else if(obj[i][item] == false){
                        // console.log( obj[i][item],item)
                        delete   obj[i][item]
                    }else if(item == "time"){
                        obj[i]["startTime"] = moment(obj[i][item][0]).format('YYYY-MM-DD HH:mm:ss')
                        obj[i]["endTime"] = moment(obj[i][item][1]).format('YYYY-MM-DD HH:mm:ss')
                        // console.log( obj[i][item])
                    }
                    replaceNullProperty(obj[i][item])
                })
            }
        }
        return obj
    }
    replaceNullProperty(obj)

console.log(obj)
// 保存信息
// import React, { useCallback, useEffect, useState } from "react";
// import { Button, Row, Col, Input,Form } from "antd";
// import Schema from "./schema";
// import SharedInfo from "./sharedInfo"
// var merge = require('lodash.merge');
// function BaseInfo(props) {
//     const {form} = props
//     function _basePath(path) {
//         // 若是数组,则直接返回
//         if (Array.isArray(path)) return path
//         // 若有 '[',']',则替换成将 '[' 替换成 '.',去掉 ']'  //   由于[0] 会被antd form解析成路径  所以将[0]改为'0' 
//         return path.replace(/\</g, '_').replace(/\>/g, '').split('_')
//     }
//     function setObj(object, path, value) {
//         if (typeof object !== 'object') return object;
//         _basePath(path).reduce((o, k, i, _) => {
//             if (i === _.length - 1) { // 若遍历结束直接赋值
//                 o[k] = value
//                 return 
//             } else if (k in o) { // 若存在对应路径,则返回找到的对象,进行下一次遍历
//                 return o[k]
//             } else { // 若不存在对应路径,则创建对应对象,若下一路径是数字,新对象赋值为空数组,否则赋值为空对象
//                 o[k] = /^[0-9]{1,}$/.test(_[i + 1]) ? [] : {}
//                 return o[k]
//             }
//         }, object)
    
//         // 返回object
//         return object;
//     }
//     const replaceNullProperty = (obj) => {
//         let nullData = [undefined,null,'null',"undefined",'']
//         for( let i in obj ){//遍历对象中的属性
//             if(obj[i] && obj[i].constructor === Object){
//                 Object.keys(obj[i]).map(item=>{
//                     replaceNullProperty(obj[i][item])
//                 })
//             }else if(obj[i] && obj[i].constructor === Array){
//                 let len = obj[i].length
//                 for(let j = 0; j < len ; j++){
//                     //    console.log(obj[i][j])
//                     if( nullData.includes(obj[i][j])){
//                         obj[i][j] = {}
//                     }else if(obj[i][j].constructor === Array || obj[i][j].constructor === Object){
//                         replaceNullProperty(obj[i][j])
//                     }
//                 }
//             }
//         }
//         return obj
//     }
//     const replaceNullProperty = (obj) => {
//         for( let i in obj ){//遍历对象中的属性
//             if(obj[i] && obj[i].constructor === Object){
//                 if(JSON.stringify(obj[i]) == "{}"){
//                     obj.splice(i,1)
//                 }
//                 obj[i]&&Object.keys(obj[i]).map(item=>{
//                     if(item == "replaceFastCarCoupon"){
//                         obj[i][item] = obj[i][item].join('')
//                     }else if(item == "mainStep"){
//                         obj[i][item] =  obj[i][item] ? 1 : 0
//                     }else if(obj[i][item] == false){
//                         console.log( obj[i][item],item)
//                         delete   obj[i][item]
//                     }
//                     replaceNullProperty(obj[i][item])
//                 })
//             }
//         }
//         return obj
//     }
//     const onFormSubmit=(e)=>{
//         e.preventDefault();
//         form.validateFields((err,obj)=>{
//             if(!err){
//                 let newObj = []
//                 Object.keys(obj).map((item,index)=>{
//                     newObj.push(setObj({},item , obj[item]))
//                 })
//                 let noNullArr = replaceNullProperty(newObj)
//                 let object = {}
//                 replaceNullProperty(merge(object,...noNullArr))
//                 // 需要将空对象 去除掉 
//                 console.log("刘杰",object)
//             }
//             console.log(err,obj)
            
//         })
//     }
//     return (
//         <div className="BaseInfoWrap">
//             <h2>基本信息</h2>
//             <Form 
//                 onSubmit={onFormSubmit}
//             >
//             <div className="baseInfoFormBlock">
//                 <Schema form={form}></Schema>
//                 {/* <SharedInfo form={form}></SharedInfo> */}
//             </div>
//             <Button type="primary" htmlType="submit">开始创建</Button>
//             </Form>
//             {/* <div className="baseInfoBtnBlock">
//                 <Button type="">取消创建</Button>
//                 <Button type="primary" >开始创建</Button>
//             </div> */}
//         </div>
//     )

// }
// export default (Form.create({ name: 'activity' })(BaseInfo))
console 命令行工具 X clear

                    
>
console