可以这么说,我有一个mailto电子邮件,其中存在一个复选框问题,要求用户从水果列表中挑选出最好的水果(选中所有适用的水果。)它们最终得到了苹果,香蕉和梨。然后,他们触发的mailto电子邮件包含以下内容(假设问题中的复选框名为bestFruits):
...
bestFruits=apples
bestFruits=bananas
bestFruits=pears
...
因此,在我的javascript文件中,我有以下一行来解析电子邮件中的值:
var bestFruits = mail.bodyText.match(/bestFruits=\s*(\S.*\S)\s*/);
所以我的问题是,到最后这大概只能取一个值。我需要的是让javascript循环并将电子邮件中的bestFruits的每个值添加到bestFruits变量中,以便每个值(苹果,香蕉和梨)都在bestFruits变量中。
有什么办法吗?我尝试进行for循环,但是我无法确定在mailto电子邮件正文中循环的语法,并将bestFruits的每个实例添加到变量中。
我最近对这一切仍然非常陌生。如果我缺少基本的知识,不胜感激。如果您需要更多信息,我们很乐意提供。
感谢您的阅读!
最佳答案
您不需要循环。您确实需要匹配所有水果(按照您的示例,匹配bestFruits
之后的所有单个单词),从匹配项中删除bestFruits=
,加入结果数组并将其存储在变量中。像这样:
var bestFruits = mail.bodyText.match(/bestFruits=\w+/g)
.map(function(x){return x.split('=')[1]})
.join(',');
它有什么作用:
匹配您所有的最佳水果。
接受每个
bestFruits=abc
元素并将其替换为abc
(即,用=
分隔符拆分并获取第二部分)制作水果字符串(使用
,
连接器将结果数组转换为字符串)。