我正在检查一个变量,例如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);