gpt4 book ai didi

javascript - 低效/丑陋的替换功能

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:14:36 26 4
gpt4 key购买 nike

我写了一个函数,应该用值替换两个定界符之间的代码,它返回(我将其应用到的字符串是 HTML 对象的 .outerHTML)。

这将类似于它在例如中的使用方式。 Vue.js 或 Angular。

看起来像这样:

static elemSyntaxParse(elem) {
let elem = _elem.outerHTML;
if (elem.includes("{{") || elem.includes("}}")) {
let out = "";
if ((elem.match(/{{/g) || []).length === (elem.match(/}}/g) || []).length) {
let occurs = elem.split("{{"),
key,
temp;

for (let i = 1; i < occurs.length; i++) {
if (occurs[i].includes("}}")) {
key = occurs[i].substring(0, occurs[i].indexOf("}}"));
temp = eval(key) + occurs[i].substring(occurs[i].indexOf("}}") + 2);
out += temp;
} else {
ModularCore.err("Insert-Delimiters \"{{\" and \"}}\" do not match.");
break;
return elem;
}
}
return occurs[0] + out;
} else {
ModularCore.err("Insert-Delimiters \"{{\" and \"}}\" do not match.");
return elem;
}
}
return elem;
}

(函数在类内部,引用了一些外部函数。)

使用示例:

<body>
<p id="test">{{ Test }}</p>
<script>
let Test = 27;
document.getElementById("test").outerHTML = elemSyntaxParse(document.getElementById("test"));
</script>
</body>

返回这个字符串:

<p id="test">27</p>

它有效,但它相当丑陋并且有点慢。

我该如何清理一下呢?我对 ES6 持开放态度。

PS:我现在“eval() 是邪恶的”,但这是我的代码中唯一出现的情况,并且(据我所知)在这种情况下是不可替换的。

谢谢!

最佳答案

我想你可以省略一些检查并结束:

 const text = elem.outerHTML.split("{{");
let result = text.shift();

for(const part of text) {
const [key, rest, overflow] = part.split("}}");
if(!key || rest == undefined || overflow) {
ModularCore.err("Insert-Delimiters \"{{\" and \"}}\" do not match.");
return elem.outerHTML;
}

result += eval(key) + rest;
}

return result;

关于javascript - 低效/丑陋的替换功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49804480/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com