第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

字符串模板與對象轉(zhuǎn)換

字符串模板與對象轉(zhuǎn)換

開心每一天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貢獻(xiàn)2041條經(jīng)驗(yàn) 獲得超4個(gè)贊

不是太清楚題主的需求,也沒考慮其他情況,大概寫了一下,僅供參考。


假設(shè)把你的字符串作為一個(gè)數(shù)組輸入,每一行字符串就是數(shù)組的一個(gè)元素


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];

    });

}


// 主函數(shù)

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));


查看完整回答
反對 回復(fù) 2019-04-07
  • 1 回答
  • 0 關(guān)注
  • 443 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號