我正在检查一个变量,比如说foo,是否等于多个值。例如,
foo
if( foo == 1 || foo == 3 || foo == 12 ) { // ... }
关键是对于这样一个微不足道的任务,它的代码相当多。我想出了以下内容:
if( foo in {1: 1, 3: 1, 12: 1} ) { // ... }
但这并不完全吸引我,因为我必须为对象中的项目赋予冗余值。
有谁知道对多个值进行相等检查的体面方法?
使用提供的答案,我最终得到以下结果:
Object.prototype.in = function() { for(var i=0; i<arguments.length; i++) if(arguments[i] == this) return true; return false; }
它可以被称为:
if(foo.in(1, 3, 12)) { // ... }
编辑: 我最近遇到了这个“技巧”,如果值是字符串并且不包含特殊字符,这很有用。对于特殊字符,由于转义而变得丑陋,并且因此更容易出错。
/foo|bar|something/.test(str);
更准确地说,这将检查确切的字符串,但对于简单的相等测试来说又是更复杂的:
/^(foo|bar|something)$/.test(str);