Javascript - 检查数组的值

Nic*_*ick 35 javascript arrays

我有一个简单的阵列与银行假期:

var bank_holidays = ['06/04/2012','09/04/2012','07/05/2012','04/06/2012','05/06/2012','27/08/2012','25/12/2012','26/12/2012','01/01/2013','29/03/2013','01/04/2013','06/05/2013','27/05/2013'];
Run Code Online (Sandbox Code Playgroud)

我想做一个简单的检查,看看某些日期是否作为该数组的一部分存在,我尝试过:

if('06/04/2012' in bank_holidays) { alert('LOL'); }
if(bank_holidays['06/04/2012'] !== undefined) { alert 'LOL'; }
Run Code Online (Sandbox Code Playgroud)

还有一些其他解决方案没有任何乐趣,我也尝试用一个简单的'x'替换所有转发的斜杠,以防出现问题.

非常感谢任何建议,谢谢!

(编辑)这是一个jsFiddle - http://jsfiddle.net/ENFWe/

Flo*_*ine 75

如果您不关心旧版浏览器:

if ( bank_holidays.indexOf( '06/04/2012' ) > -1 )
Run Code Online (Sandbox Code Playgroud)

如果你对传统的浏览器护理,有上提供的垫片MDN.否则,jQuery提供了一个等效的函数:

if ( $.inArray( '06/04/2012', bank_holidays ) > -1 )
Run Code Online (Sandbox Code Playgroud)

  • 应该是相反:`arr.indexOf(value)` (2认同)
  • @Nick,你有我的同情...... (2认同)

ios*_*seb 6

试试这个:

// this will fix old browsers
if (!Array.prototype.indexOf) {
  Array.prototype.indexOf = function(value) {
    for (var i = 0; i < this.length; i++) {
      if (this[i] === value) {
        return i;
      }
    }

    return -1;
  }
}

// example
if ([1, 2, 3].indexOf(2) != -1) {
  // yay!
}
Run Code Online (Sandbox Code Playgroud)