我们正在创建一个函数,如果传递的输入是某些预定义的值,它将返回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个符合条件的输入,但列表太长了。哪种方法比较好?
答案 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代码更好的解决方案是因为
注意:代码中的函数称为“isEligbile”而不是“isEligible”,您可能需要修复此问题。