一个switch语句,因为你的代码只有if-else :-)
不过说实话,最好的方法是找到一个简单的算法来从任何给定的名称创建电子邮件地址,例如
function mail(name) {
return name.toLowerCase() + "@gmail.com";
}
var email = mail("Bob") // example usage
如果它们差异太大,您可以使用对象作为键值映射:
var mails = {
"Steve": "steve@gmail.com",
"Bob": "bob1@freemail.org",
...
}
var email = mails[name];
如果你需要确定要使用哪种算法,可以将它们组合起来:
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;
}
或者更简单地说:
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;
}
尽可能减少要传递给客户端的数据量。
email
似乎只是名称的小写版本,附加了@gmail.com
。如果是这种情况,您不需要任何控制结构。 - Anthony Grist