缥缈止盈
不是太清楚题主的需求,也没考虑其他情况,大概写了一下,仅供参考。假设把你的字符串作为一个数组输入,每一行字符串就是数组的一个元素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));