当前位置: 首页 > 面试题库 >

替代一百万个IF语句

拓拔俊艾
2023-03-14
问题内容

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

只是尝试尽可能减少要传递给客户端的数据量。



 类似资料:
  • 我有两个清单: 约750k个“句子”(长字符串)的列表 要从750k个句子中删除的大约20k个“单词”的列表 所以,我必须遍历750k个句子,执行大约20k个替换,但前提是我的单词实际上是“单词”,并且不是更大字符串的一部分。 我是通过预编译我的单词来做到这一点的,这样它们的两侧就有单词边界元字符: 然后我循环我的“句子”: 这个嵌套循环每秒处理大约50个句子,这很好,但是处理我所有的句子仍然需要

  • 我有一个“Customer”表,它有将近120万条记录,其中一列是ntext类型的“customer_records ”,它包含xml数据。我需要在该列的所有现有记录中替换一个url值。我尝试了下面的替换查询,但是执行该查询需要大约20分钟的时间。 在更新期间,CPU 消耗被利用到最大,这引起了问题。在 120 万条记录中,实际更新的记录中有 60 万条记录,但查询需要读取每条记录以查找和替换 U

  • 我们的老师让我们创建一个关于给定情况的java程序,即使用if/else的每小时工资率,这就是我得出的结果,我对此感到高兴(我只是一个初学者)。接下来的指令是用switch语句替换if/else。他还没有讨论switch语句。我试图搜索它们,但我无法理解。请帮忙。非常感谢。 这就是确切的指示:1。使用if/else构造编写一个程序,该程序将根据工作小时数计算人员工资。注意ff:工资率为每小时35菲

  • 问题内容: 对于我的工作,我必须开发一个小型Java应用程序,该应用程序可以解析非常大的XML文件(约30万行)以选择非常具体的数据(使用),因此我试图对其进行一些优化。我想知道这两个摘要之间哪个更好: 要么 其他详情: 这些if语句在循环内的每次迭代中执行(约20k次迭代) 的是一种在利用外部函数每次迭代计算 如果将设置为,则无需测试正则表达式是否匹配 谢谢你的帮助。 问题答案: 我遵循的一条黄

  • 我有一个if else语句,它可能会在不久的将来增长。 因为,这看起来已经很乱了,我想如果我能在这里应用任何设计模式会更好。我研究了战略模式,但我不确定这是否会降低其他条件。有什么建议吗?

  • 如果你不使用 CodeIgniter 的模板引擎,则你可以在视图文件中使用原始 PHP 代码。要使 PHP 代码达到最精简并使其更容易辨认,因此建议你使用 PHP 替代语法控制结构及短标记的 echo 语句。 建议你使用 PHP 的语法为你的控制结构和简短的输出标签。如果你还不熟悉这个语法,下面你将学会如何从代码中消灭大括号和“echo”语句。 自动短标记支持 注:如果你发现本页描述的语法在你的服