gpt4 book ai didi

javascript - 根据名称值设置邮件值

转载 作者:行者123 更新时间:2023-12-03 03:50:31 25 4
gpt4 key购买 nike

我有一个表,有 2 个字段,一个是“名称”,HTML 类是“名称”,另一个是“电子邮件”,HTML 类是:“mail”。

<table>
<tr>
<td colspan="2">User Email</td>
</tr>
<tr>
<td class="name">Albert Einstein</td>
<td class="mail"></td>
</tr>
</table>

假设我有一个像这样的邮件列表:

  • 姓名:阿尔伯特·爱因斯坦,邮件:“albert@company.com”
  • 姓名:艾萨克·牛顿,邮件:“inewton@company.com”
  • 姓名:Alice Newton,邮件:“anewton@company.com”

我想要的是根据名称字段设置邮件字段的值。

此 Javascript 代码共享自 @Ganesan San ,似乎几乎完成了工作:

var emails = ["albert@company.com", "inewton@company.com", "anewton@company.com"];
var name_elements = document.querySelectorAll("td.name");
var mail_element = document.querySelectorAll("td.mail");
for (i = 0; i < name_elements.length; i++) {
var current_element = name_elements[i];
var name = current_element.textContent;
for (j = 0; j < emails.length; j++) {
if (emails[j].indexOf(name) != -1) {
mail_element[i].textContent = emails[j];
break;
}
}
}

但它不适用于名称中的大写字母或空格,那么我们如何修复此代码以使其适用于大写字母以及名字和姓氏之间的空格?还可以检测哪些电子邮件属于具有相似电子邮件的人,请参见示例:

  1. 姓名:艾萨克·牛顿,邮件:“inewton@company.com”
  2. 姓名:Alice Newton,邮件:“anewton@company.com”

感谢@Alexander Higgins@Tushar Vaghela 。这两个答案都很好。

最佳答案

要处理大写,您可以使用 .toLowerCase() 将字符串转换为小写

然后,您需要将您的姓名分成几部分,并尝试找到与电子邮件匹配的内容。

您可以使用 split(' ') 将字符串分成单词数组,并使用空格作为分隔符。

从这里您可以获取名字和姓氏。

您可以将名字的第一个字符与最后一个字符结合起来,以检查地址,格式为“名字首字母 + 姓氏 + '@' + 域名”。

如果失败,并且您只想按名字进行检查,请组合名字 + '@' + 域名。

顺便说一句,在原始代码中,您不需要在每次迭代中循环检查所有元素 .indexOf 。如下所示,.indexOf 在循环中只能检查一次。

<table>
<tr>
<td colspan="2">User Email</td>
</tr>
<tr>
<td class="name">Albert Einstein</td>
<td class="mail"></td>
</tr>
<tr>
<td class="name">Isaac Newton</td>
<td class="mail"></td>
</tr>
<tr>
<td class="name">Alice Newton</td>
<td class="mail"></td>
</tr>
</table>

<script>

var emails = ["albert@company.com", "inewton@company.com", "anewton@company.com"];
var name_elements = document.querySelectorAll("td.name");
var mail_element = document.querySelectorAll("td.mail");
for (i = 0; i < name_elements.length; i++) {
var current_element = name_elements[i];
var name = current_element.textContent.toLowerCase();
var nameParts= name.split(' ');
var fName= nameParts[0];
var fInitial= name[0];
var lastName= name.split(' ')[1];
var possibleFormats = [
fInitial + lastName + '@company.com',
fName + lastName + '@company.com',
fName + '.' + lastName + '@company.com',
fName + '@company.com',
]
var idx=-1;
for(var k=0; idx<0 && k<possibleFormats.length; k++)
{

idx= emails.indexOf(possibleFormats[k]);
console.log(idx);
}
if (idx>-1)
{
mail_element[idx].textContent = emails[idx]
} else {
console.log('Failed: ' + emailToFind);
}

}

</script>

关于javascript - 根据名称值设置邮件值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45185259/

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