【问题标题】:javascript, jQuery - check if value exists in array [duplicate]javascript,jQuery - 检查数组中是否存在值[重复]
【发布时间】:2012-08-02 14:18:32
【问题描述】:

是否有更好的方法来检查多个项目是否匹配 if 语句中的变量

我有 3 个 if 语句,我需要查看一个项目是否与一个数组/变量命名代码匹配。有很多项目要与代码数组/变量进行比较,所以我不得不用 | 复制每个项目。它们之间。有没有更有效的方法或者我可以制作一个数组来检查代码是否等于数组中的任何项目?

这就是我所拥有的

onLabelShow: function(event, label, code){
        if (code == "US-AL" | code == "US-AZ" | code == "US-CA" | code == "US-CT" | code == "US-FL" | code == "US-HI" | code == "US-ID" | code == "US-IL" | code == "US-IA" | code == "US-LA" | code == "US-ME" | code == "US-MD" | code == "US-MA" | code == "US-MO" | code == "US-NE" | code == "US-NV" | code == "US-NJ" | code == "US-NM" | code == "US-NY" | code == "US-OH" | code == "US-OK" | code == "US-OR" | code == "US-PA" | code == "US-TN" | code == "US-UT" | code == "US-VA" | code == "US-CA" | code == "US-WA" | code == "US-NC" ) {
            //do nothing
        }
        else if (code) { //if a state is not specified in var stateRedirects then prevent default
            event.preventDefault();
        }                   
    },      
    onRegionOver: function(event, code){
        if (code == "US-AL" | code == "US-AZ" | code == "US-CA" | code == "US-CT" | code == "US-FL" | code == "US-HI" | code == "US-ID" | code == "US-IL" | code == "US-IA" | code == "US-LA" | code == "US-ME" | code == "US-MD" | code == "US-MA" | code == "US-MO" | code == "US-NE" | code == "US-NV" | code == "US-NJ" | code == "US-NM" | code == "US-NY" | code == "US-OH" | code == "US-OK" | code == "US-OR" | code == "US-PA" | code == "US-TN" | code == "US-UT" | code == "US-VA" | code == "US-CA" | code == "US-WA" | code == "US-NC" ) {
            //do nothing
        }
        else if (code) { //if a state is not specified in var stateRedirects then prevent default
            event.preventDefault();
        }                   
    },
    onRegionClick: function (event, code) {
        if (code == "US-AL" | code == "US-AZ" | code == "US-CA" | code == "US-CT" | code == "US-FL" | code == "US-HI" | code == "US-ID" | code == "US-IL" | code == "US-IA" | code == "US-LA" | code == "US-ME" | code == "US-MD" | code == "US-MA" | code == "US-MO" | code == "US-NE" | code == "US-NV" | code == "US-NJ" | code == "US-NM" | code == "US-NY" | code == "US-OH" | code == "US-OK" | code == "US-OR" | code == "US-PA" | code == "US-TN" | code == "US-UT" | code == "US-VA" | code == "US-CA" | code == "US-WA" | code == "US-NC" ) {
            window.location = '/' + code;
        }
        else if (code) { //if a state is not specified in var stateRedirects then prevent default
            //event.preventDefault();
        }   

    }   

任何帮助、示例或代码将不胜感激!我已经尝试过为每一个做,但我认为我知道的不够多,无法让它与数组一起工作。

【问题讨论】:

标签: javascript jquery arrays jvectormap


【解决方案1】:
var codes = ["US-AL", "US-AZ", ... ];


if($.inArray(code, codes) > -1){
    //do something    
}

更新: 结合@Deestan 的建议,这可以重写为..

function isValidCode(code){
    return ($.inArray(code, codes) > -1);
}

【讨论】:

  • 我还建议将其包装在函数 isValidCode 中。
  • 如果您已经在使用 jQuery,这可能是更好的解决方案。 $.inArray的内部实现:jsfiddle.net/HB3jr
  • +1 还展示了如何首先声明数组,这很容易成为下一个问题,因为提问者承认自己不知道如何解决他们的数组问题。
  • 使用下划线时的另一个选项:underscorejs.org/#indexOf
  • 哇!这看起来很棒!让我看看我是否能弄清楚如何替换我所拥有的。那么我应该在 if 语句中使用 isValidCode 吗?
【解决方案2】:

Yep

array.indexOf(searchElement[, fromIndex])

【讨论】:

  • 也对。 :) 他将它标记为 jQuery,所以我想为什么不使用 jQuery 等价物。
猜你喜欢
  • 2011-12-14
  • 2012-12-06
  • 2018-12-17
  • 2011-09-20
  • 1970-01-01
  • 1970-01-01
  • 2011-11-14
  • 2017-06-01
  • 1970-01-01
相关资源
最近更新 更多