为了账号安全,请及时绑定邮箱和手机立即绑定

字符串模板与对象转换

字符串模板与对象转换

开心每一天1111 2019-03-21 12:14:10
字符串| Str | String | 字符串 | mock1 || `message` | Object | 消息 | mock2 || `message.data` | Object | 消息2 | mock3 || `message.data.data2` | Object | 消息3 | mock4 |我希望得到的格式.多少层级不确定。求解决方法或思路。{      Str: {        mock: 'mock1',        must: 1,        remark: '字符串',        type: 'String'      },      message: {        data: {          data2: {            mock: 'mock4',            must: 1,            remark: '消息3',            type: 'Object'          },          mock: 'mock3',          must: 1,          remark: '消息2',          type: 'Object'        },        mock: 'mock2',        must: 1,        remark: '消息',        type: 'Object'      }    }
查看完整描述

1 回答

?
缥缈止盈

TA贡献2041条经验 获得超4个赞

不是太清楚题主的需求,也没考虑其他情况,大概写了一下,仅供参考。


假设把你的字符串作为一个数组输入,每一行字符串就是数组的一个元素


function parse(obj, str){

    let [key, type, remark, mock] = str.split('|').filter(i => i);

    key = key.trim().replace(/`/g,'');

    type = type.trim();

    remark = remark.trim();

    mock = mock.trim();

    const keyArr = key.split('.');

    generateObj(obj, keyArr, {

        type,

        remark,

        mock

    });

}


function generateObj(obj, keyArr, info){

    let tmpObj = obj;

    const len = keyArr.length;

    keyArr.forEach((key, idx) => {

        tmpObj[key] = tmpObj[key] || {};

        if(idx === len - 1){

            tmpObj[key] = {

                ...tmpObj[key],

                ...info,

                must: 1

            }

        }

        tmpObj = tmpObj[key];

    });

}


// 主函数

function process(strArr) {

    if (!strArr) return;

    const res = {};

    strArr.forEach(item => {

        parse(res, item);

    });

    return res;

}


const input = ['| Str | String | 字符串 | mock1 |', 

'| `message` | Object | 消息 | mock2 |', 

'| `message.data` | Object | 消息2 | mock3 |', 

'| `message.data.data2` | Object | 消息3 | mock4 |'];


console.log(process(input));


查看完整回答
反对 回复 2019-04-07
  • 1 回答
  • 0 关注
  • 431 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号