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));
添加回答
举报