繁体   English   中英

javascript:检查预填充集合中是否存在元素的最佳方法?

[英]javascript: best way to check if element exists in pre populated collection?

我们正在创建一个函数,如果传递的输入在某些预定义值中,它将返回 true:

function isEligbile(input){
    return (input == 1 || input == 24 || input == 17);
}

或者

function isEligbile(input){
   var eligibleInputs = {1: true, 24: true, 17: true};
   return eligibleInputs[input]; 
}

我刚刚提到了 3 个符合条件的输入,但列表太长。 哪种方法是进行此类比较的最佳方法?

您不需要对象字面量来存储您的值,只需要一个数组,您可以使用indexOf()从中检查授权值:

function isEligible(input){
   var eligibleInputs = [1, 24, 17];
   return eligibleInputs.indexOf(input) != -1;
}

请注意,在您的情况下,对象文字不是一个糟糕的选择。 写入时间可能更长,但执行速度也更快。

如果您确定要对符合条件的输入进行硬编码,我建议:

function isEligible(input) {
    var eligibleInputs = [1, 17, 24];
    return eligibleInputs.includes(input);
}

但是,如果符合条件的输入列表真的很长或可能会发生变化,您可能需要考虑使用不同的解决方案,例如从外部源加载列表。

我发现上面的代码片段比 OP 代码更好的解决方案是因为

  • 扩展此列表更容易(键入的字符更少)
  • 它比每个元素都有一个选项的 if 语句要优雅得多
  • 如果其他事情需要,您可以轻松地遍历数组

注意:您代码中的函数称为“isEligbile”而不是“isEligible”,您可能需要解决此问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM