我正忙着写一个简单的 HTML 到 Github markdown 函数。我的想法是拥有一组对象,这些对象定义了一种“映射”,从 HTML 标记到带有关联正则表达式的降价符号。
regExpReplace意味着要解析一个 HTML 字符串,它将遍历 中的每个项目,lessonToMDMap并在.replace(). 我试图弄清楚如何从回调函数中更新markdown内部定义的字符串。该代码当前不起作用,因为箭头函数回调可以访问父范围(forEach 函数的词法范围)。由于这个原因,该函数运行但不修改字符串。regExpReplaceforEach
我的问题是,是否有一些我可以从箭头函数回调中访问 forEach 之外的父范围?有没有办法将范围绑定到回调?
//Define mapping in this array of objects
const lessonToMDMap = [
{
htmlTag: '<span class="ql-size-large">',
mdTag: "##",
regExp: RegExp(/\<(span)\s(class)\=("ql-size-large")\>/,'g'),
},
{
htmlTag: '<span class="ql-size-huge">',
mdTag: "#",
regExp: RegExp(/\<(span)\s(class)\=("ql-size-huge")\>/,'g')
},
]
//Function for making replacements of html tags
const regExpReplace = function (mapArray, stringToParse) {
let markdown = '' + stringToParse;
mapArray.forEach((mapItem)=>{
markdown = markdown.replace(mapItem.regExp,mapItem.mdTag);
})
return markdown;
};
我尝试将回调定义为箭头函数,regExpReplace如下所示,但是我仍然无法修改字符串。
//Function for making replacements of html tags
const regExpReplace = function (mapArray, stringToParse) {
let markdown = '' + stringToParse;
const replace = (mapItem) => {
markdown = markdown.replace(mapItem.regExp,mapItem.mdTag);
}
mapArray.forEach(replace);
return markdown;
};