gpt4 book ai didi

javascript - 功能优化,重音元音替换为非重音元音

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:55:15 24 4
gpt4 key购买 nike

我需要从数据库中检索名字,可以使用重音元音和非重音元音搜索这些名字,两种方式的响应都必须返回所有匹配的名字。我用来解决这个问题的方法是一个函数,它用包含两个元音的字符串替换搜索名称中的元音,以便使用正则表达式方法查找这两个选项。

如何优化这个功能?

const replaceVowels = fullName => {
const v = [
{ vocal: "a", replace: "[aá]" },
{ vocal: "e", replace: "[eé]" },
{ vocal: "i", replace: "[ií]" },
{ vocal: "o", replace: "[oó]" },
{ vocal: "u", replace: "[uú]" },
{ vocal: "á", replace: "[aá]" },
{ vocal: "é", replace: "[eé]" },
{ vocal: "í", replace: "[ií]" },
{ vocal: "ó", replace: "[oó]" },
{ vocal: "ú", replace: "[uú]" }
];
for (let i = 0; i < v.length; i++) {
fullName = fullName.replace(new RegExp(v[i].vocal, "gi"), v[i].replace);
}
return { $regex: fullName, $options: "i" };
};
replaceVowels("mayúsculas");
// returns "m[aá]y[uú]sc[uú]l[aá]s"

最佳答案

一个简单的(非常小的)速度优化是使元音列表成为一个对象,并且只通过一次 fullName。作为奖励,代码现在可以正常工作了!

const replaceVowels = fullName => {
const v = {
"a": "[aá]",
"e": "[eé]",
"i": "[ií]",
"o": "[oó]",
"u": "[uú]",
"á": "[aá]",
"é": "[eé]",
"í": "[ií]",
"ó": "[oó]",
"ú": "[uú]"
};
let output = "";
for (let i = 0; i < fullName.length; i++) {
if (v[fullName[i]]){
output += v[fullName[i]];
}
else {
output += fullName[i];
}
}
return output;
};
replaceVowels("mayúsculas");
// returns "m[aá]y[uú]sc[uú]l[aá]s"

关于javascript - 功能优化,重音元音替换为非重音元音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50533041/

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