Javascript 使用react和es6清理电子邮件输入

Javascript 使用react和es6清理电子邮件输入,javascript,arrays,lodash,email-validation,Javascript,Arrays,Lodash,Email Validation,我正试图通过我的状态,取出recEmail、cc和bcc的内容。在每封邮件中,您可以有多封电子邮件,邮件之间用一个、,。比如说 电子邮件可能有:email1@email.com, email2@email.com cc可以:email3@email.com, email4@email.com 我使用lodash循环遍历“this.state”对象并将电子邮件推送到一个数组中,但随后我必须循环遍历这个新数组,将每个数组位置的电子邮件分成一封电子邮件(这样我就可以运行一个正则表达式,看看它是否有效)

我正试图通过我的状态,取出recEmail、cc和bcc的内容。在每封邮件中,您可以有多封电子邮件,邮件之间用一个、,。比如说

电子邮件可能有:email1@email.com, email2@email.com
cc可以:email3@email.com, email4@email.com

我使用lodash循环遍历“this.state”对象并将电子邮件推送到一个数组中,但随后我必须循环遍历这个新数组,将每个数组位置的电子邮件分成一封电子邮件(这样我就可以运行一个正则表达式,看看它是否有效)

这个方法看起来很混乱,我忍不住想有更好的方法来解决这个问题。这是我到目前为止所拥有的


this.state={recEmail:'',cc:'',bcc:'',subject:'',bodyText:'',testInput:false};
州清洁员(电子邮件){
var emailstoClean=[];
_.forOwn(电子邮件,(值,键)=>{
log('这些是键:',键);
log('这些是值:',value);
如果(键!='testInput'){
emailstoClean.push(value.split(','))
}
})
log('final emailstoClean:',emailstoClean);
返回电子邮件并保持干净

}
几件事:电子邮件令人惊讶地复杂——快速搜索一下谷歌就会确认regex不是验证电子邮件的最佳方式

对于要排列的电子邮件,您不需要直接从状态属性中提取电子邮件字符串,并在每个属性上调用split(',')。这将给你一系列的电子邮件。对state对象中的所有电子邮件项执行此操作,然后在数组上调用concat,或者使用新的spread操作符将它们全部放入具有唯一索引的单个数组中


然后,您可以使用map、filter或其他方法来处理数组中的每个电子邮件地址

谢谢你的回复。我希望能有比拆分更优雅的东西,但我肯定会这么做。更优雅的解决方案是将电子邮件存储在你所在州的一个数组中。React将很好地处理这一问题,您的状态将更好地代表总体情况。查看outlook.com用户界面,了解如何将多封电子邮件作为一个集合而不是字符串输入和呈现