0

我正忙着写一个简单的 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;
    };
4

0 回答 0