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

时间:2017-12-28 14:29:02

标签: javascript

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

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

OR

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

我刚刚提到了3个符合条件的输入,但列表太长了。哪种方法比较好?

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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

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

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

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

  • 扩展此列表更容易(输入的字符更少)
  • 比if-statement更具优雅性,每个元素都有一个选项
  • 如果需要其他东西,您可以轻松地遍历数组

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