gpt4 book ai didi

javascript - 替代一百万个 IF 语句

转载 作者:数据小太阳 更新时间:2023-10-29 04:03:52 27 4
gpt4 key购买 nike

我使用 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'; }
....

最佳答案

switch 语句,因为您的代码只是 if-elses :-)

不,老实说。最好的办法是,如果你能找到一个简单的算法来从任何给定的名字创建一个电子邮件地址,比如

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;
}

尽量减少传送给客户的数据量。

关于javascript - 替代一百万个 IF 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10029089/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com