如何检查电子邮件地址是否被多次写入



我使用javascript中的映射,并使用逻辑。如果字段数大于映射大小,则任何邮件地址都会重复。当映射采用空的和未定义的值,从而给出错误的输出时,就会出现问题。假设我将第一个和第二个字段留空,那么未定义就是映射,显示多封电子邮件的错误消息。

useEffect(() => {
let count = 0;
const uniqueEmails = new Set(emailsAndRoles.map((emailsAndRole) => emailsAndRole.email));

console.log('uniqueEmails', uniqueEmails);
let alreadyExist = false;
for (let i = 0; i < emailsAndRoles.length; i++) {
const email = emailsAndRoles[i].email;
if (allUsersEmail.includes(email)) {
alreadyExist = true;
break;
}
}

if (uniqueEmails.size < emailsAndRoles.length || alreadyExist) {
setDuplicateEmailMessage('You have entered duplicate email');
console.log(uniqueEmails.size, emailsAndRoles.length);
} else {
setDuplicateEmailMessage('');
console.log(uniqueEmails.size, emailsAndRoles.length);
}
// eslint-disable-next-line
}, [emailsAndRoles]);

因此删除空条目。你可以用过滤

emailsAndRoles.map(({ email }) => email).filter(Boolean)

最新更新