在javascript中连接比较

时间:2013-01-24 23:46:47

标签: javascript comparison-operators

这更多是出于好奇,但是可以在javascript中连接比较吗?

示例:

var foo = 'a',
    bar = 'b';
if (foo === ('a' || bar)) {
    console.log('yey');
}

选择......

var foo = 'a',
    bar = 'b';
if (foo === 'a' || foo === bar)) {
    console.log('yey');
}

P.S:当你在几个条件下比较同一个变量时,这可能非常有用。

4 个答案:

答案 0 :(得分:2)

您可以使用Array.indexOf

if (["a", "b"].indexOf(foo) > -1) {
    console.log("yey");
}

虽然某些旧浏览器不支持此方法,但请查看 MDN 中的兼容性问题 - 提供了一个简单的shim

评论中@Pointy建议的另一种方法是检查对象中是否存在属性:

if (foo in {a: 1, b: 1}) {  // or {a: 1, b: 1}[foo]
    console.log("yey");
}

答案 1 :(得分:1)

有几种不同的方法可以做到这一点。我最喜欢的是将数组与indexOf结合使用。

if ( ['a', 'b'].indexOf(foo) > -1 ) {
    console.log('yey');
}

答案 2 :(得分:1)

Array indexOf是一种解决方案

另一个选项是switch statement

switch (foo) {
   case "a":
   case "b":
      console.log("bar");
      break;
   case "c":
      console.log("SEE");
      break;
   default:
      console.log("ELSE");
}

其他解决方案也可以是对象查找或正则表达式。

答案 3 :(得分:1)

通常我会使用正则表达式:

if (^/a|b$/i.test(foo)) {
  ...
}