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));
添加回答
舉報(bào)