在javascript中链接逻辑运算符的简短手?

Tra*_*vis 8 javascript if-statement logical-operators

有没有更好的方法在javascript中编写以下条件?

if ( value == 1 || value == 16 || value == -500 || value == 42.42 || value == 'something' ) {
  // blah blah blah
}
Run Code Online (Sandbox Code Playgroud)

我讨厌把所有这些逻辑OR串在一起.我想知道是否有某种速记.

谢谢!

Li0*_*liQ 5

var a = [1, 16, -500, 42.42, 'something'];
var value = 42;
if (a.indexOf(value) > -1){
// blah blah blah
}
Run Code Online (Sandbox Code Playgroud)

Upd: 评论中建议的效用函数样本:

Object.prototype.in = function(){
  for(var i = 0; i < arguments.length; i++){
    if (this == arguments[i]) return true;
  }
  return false;
}
Run Code Online (Sandbox Code Playgroud)

所以你可以写:

if (value.in(1, 16, -500, 42.42, 'something')){
// blah blah blah
}
Run Code Online (Sandbox Code Playgroud)

  • 请注意,IE上没有`Array.prototype.indexOf`方法. (8认同)
  • 我强烈建议不要在`Object`上进行原型设计.除了名称空间污染的广泛性之外,破坏使用对象作为查找映射的代码的风险很高.最好将这种实用方法放在`Array.prototype`上.此外,它允许您对不从"Object"继承的东西使用该方法,即DOM节点之类的"宿主对象". (4认同)
  • [请勿修改您不拥有的对象](http://www.nczonline.net/blog/2010/03/02/maintainable-javascript-dont-modify-objects-you-down-own/),特别是`Object.prototype`! (2认同)