【问题标题】:Compare multiple values against the same variable [duplicate]将多个值与同一个变量进行比较[重复]
【发布时间】:2016-04-26 10:04:31
【问题描述】:

我有一长串要与同一个变量进行比较的字符串。

有没有更短的方法来做到这一点?

if(val=="kivi" || val=="apples" || val=="lychee" || val=="banana.C" || val=="mangos")

【问题讨论】:

  • 不。这与直接字符串比较一样短。

标签: javascript jquery


【解决方案1】:

indexOf 与值数组一起使用

var valArr = ["kivi","apples","lychee","banana.C","mangos"];

if(valArr.indexOf(val) > -1){
   .......
}

【讨论】:

    【解决方案2】:

    您可以创建一个数组并检查该值是否存在于数组中。

    Array#includes

    var fruits = ['kivi', 'apples', 'lychee', 'banana.C', 'mangos'];
    
    if (fruits.includes(val)) {
    

    var fruits = ['kivi', 'apples', 'lychee', 'banana.C', 'mangos'];
    
    document.getElementById('test').addEventListener('keyup', function() {
        document.getElementById('result').textContent = 'Contains? ' + fruits.includes(this.value);
    }, false);
    <input type="text" id="test" />
    <div id="result"></div>

    请注意,最新的浏览器支持此功能。但是,polyfill 可以在旧版浏览器中使用。

    Browser CompatibilityMDN

    【讨论】:

    • 你喜欢没有旧版支持的新方法,不是吗@Tushar :)
    • 包括关于Browser compatibility的注释
    • @RayonDabre 谢谢,添加:)
    【解决方案3】:

    不。这与直接字符串比较一样短。

    如果您有很多值要比较,您可以将这些值放在一个数组中并使用indexOf,如下所示:

    var comparisons = ["kivi", "apples", "lychee", "banana.C", "mangos" ];
    if (comparisons.indexOf(val) != -1) {
        // do something...
    }
    

    【讨论】:

      【解决方案4】:
      myArr = ["kivi", "apples", "lychee", "banana.C", "mangos"];
      
      if(myArr.indexOf(val) != -1)
      {  
         // Element Found!!
      }
      

      【讨论】:

        【解决方案5】:

        一行检查:

        if (['kivi', 'apples', 'lychee', 'banana.C', 'mangos'].includes(val)) {
            // Some code
        }
        

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-02-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-28
        • 2021-06-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多