在JavaScript中多次检查一个

时间:2018-04-02 09:16:36

标签: javascript

我知道这可能听起来很愚蠢,但我想知道这段代码是否可以用更短的版本编写:

if (this.myVeryLongName.aRandomProperty === 'property_1' || this.myVeryLongName.aRandomProperty === 'property_1' ||  this.myVeryLongName.aRandomProperty === 'property_1') {
     //do something
}

可能是这样的:

if (this.myVeryLongName.aRandomProperty === ('property_1' || 'property_1' ||  'property_1')) {
    //do something
}

有什么方法可以缩短它并且仍然具有相同的功能吗?

3 个答案:

答案 0 :(得分:2)

您可以制作数组并使用includes,例如:

if ( ['property_1','property_2','property_3'].includes( this.myVeryLongName.aRandomProperty ) ) {
    //do something
}

Doc:includes

答案 1 :(得分:1)

可能更好的选择(比我在评论中发布的那个)

switch(this.myVeryLongName.aRandomProperty) {
case 'property_1':
case 'property_2':
case 'property_3':
  doSomethingHere();
  break;
// if you have more cases, add them here!
}

请注意,如果需要更改,这将更容易阅读和扩展。

答案 2 :(得分:0)

有多种方法可以做到这一点:

  • ['property_1','property_2','property_3'].includes( this.myVeryLongName.aRandomProperty )
    

    (ES 2016)

  • ['property_1','property_2','property_3'].indexOf( this.myVeryLongName.aRandomProperty ) !== -1
    

    (ES 5)

  • /^(?:property_1|property_2|property_3)$/.test( this.myVeryLongName.aRandomProperty )
    

    (任何JS版本)