可以这么说,我有一个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(即,用=分隔符拆分并获取第二部分)
制作水果字符串(使用,连接器将结果数组转换为字符串)。

10-06 15:47