批量声明变量及赋值
批量声明变量及赋值
浮川的小窝

批量声明变量及赋值

面壁人浮川
2021-07-14 发布 / 正在检测是否收录...
温馨提示:
本文最后更新于2022年03月03日,已超过931天没有更新,若内容或图片失效,请留言反馈。

遇到一种业务场景 记录一下

js.jpeg

当遇到复杂入餐结构体时 可以通过eval进行动态变量声明 当然也可以进行javascript代码 但是这种执行方式不安全

代码处理部分

const CONST_NAME  =  [
     {name:'FACE',pic:'facePicMap',struct:'faceStructMap'},
     {name:'HUMAN',pic:'humanPicMap',struct:'humanStructMap'},
     {name:'VEHICLE',pic:'vehiclePicMap',struct:'fvehicleStructMap'},
     {name:'VEHICLE2',pic:'vehicle2PicMap',struct:'fvehicle2StructMap'},
     {name:'VEHICLE3',pic:'vehicle3PicMap',struct:'vehicle3StructMap'},
 ];

for(let i = 0;i < this.CONST_NAME.length - 1;i++){
    eval(`${CONST_NAME[i].pic} = {}`)
    eval(`${CONST_NAME[i].struct} = {}`)
} ;

let obj = {};

XXX.foEach(lev1=>{
    lev1.Arr.forEach(lev2=>{
        const {pic,struct} = CONST_NAME.find(item=>item.name === lev2.value)
        if(xxx){
            // 传入对象是json形式的 否则会报错!!! 同理赋值为一个字符串 也需要在模板拼接中
            // 声明出对象的类型 ex:eval(`${pic}[${uuid}] = '123'(字符串) || 123(数字)`)
            eval(`${pic}[${uuid}] = ${JSON.stringify({
                xxx:'20',
                ...
             })}`)
            obj[pic] = eval(pic)
        }else{
            eval(`${struct}[${uuid}] = ${JSON.stringify({
                id:'',
                ...xxx
            })}`)
            obj[struct] =eval(struct)
        }
    })
})

console.log(obj)

© 版权声明
THE END
喜欢就支持一下吧
点赞 0 分享 收藏

评论 (0)

取消