Jon*_*man 8 javascript if-statement
使用JavaScript我将网页中的名称拉出来并以某种方式将它们串在一起(可能与数组一起).一旦我将所有名称收集在一起,我需要创建另一个字符串,该字符串提供名称的所有电子邮件地址.电子邮件地址不在网页上,所以我必须在我的脚本中以某种方式列出每个可能的thisName = thisEmail.我打算通过制作一个无数的if语句来解决这个问题,但我认为必须采用更有效的方式.有什么建议?
var x = getElementById("names");
var name = x.InnerHTML;
var email;
if (name == 'Steve'){ email == 'steve462@gmail.com'; }
if (name == 'Bob'){ email == 'duckhunter89@gmail.com'; }
....
Run Code Online (Sandbox Code Playgroud)
Ber*_*rgi 15
一个switch语句,因为你的代码只有if-elses :-)
不,老实说.最好的办法是,如果您找到一个简单的算法来创建任何给定名称的电子邮件地址,例如
function mail(name) {
return name.toLowerCase() + "@gmail.com";
}
var email = mail("Bob") // example usage
Run Code Online (Sandbox Code Playgroud)
如果它们差异很大,您可以使用对象作为键值映射:
var mails = {
"Steve": "steve@gmail.com",
"Bob": "bob1@freemail.org",
...
}
var email = mails[name];
Run Code Online (Sandbox Code Playgroud)
如果必须确定需要使用哪种算法,也可以将它们组合起来:
var map = [{
algorithm: function(name) { return name+"@something"; },
names: ["Steve", "Bob", ...]
},{
algorithm: function(name) { return "info@"+name+".org"; },
names: ["Mark", ...]
}];
for (var i=0; i<map.length; i++)
if (map[i].names.indexOf(name) > -1) {
var email = map[i].algorithm(name);
break;
}
Run Code Online (Sandbox Code Playgroud)
或者当它更简单时:
var domains = {
"gmail.com": ["Steve", "Bob", ...],
"free.xxx": ["Mark", ...],
...
};
for (var domain in domains)
if (domains[domain].indexOf(name) > -1)
var email = name.toLowerCase()+"@"+domain;
break;
}
Run Code Online (Sandbox Code Playgroud)
只是尽量减少要传递给客户端的数据量.
| 归档时间: |
|
| 查看次数: |
914 次 |
| 最近记录: |