小编典典

根据值列表检查变量是否相等

all

我正在检查一个变量,比如说foo,是否等于多个值。例如,

if( foo == 1 || foo == 3 || foo == 12 ) {
    // ...
}

关键是对于这样一个微不足道的任务,它的代码相当多。我想出了以下内容:

if( foo in {1: 1, 3: 1, 12: 1} ) {
    // ...
}

但这并不完全吸引我,因为我必须为对象中的项目赋予冗余值。

有谁知道对多个值进行相等检查的体面方法?


阅读 156

收藏
2022-08-08

共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);
2022-08-08