Javascript - проверить массив для значения
У меня есть простой массив с праздничными днями:
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'];
Я хочу сделать простую проверку, чтобы увидеть, существуют ли определенные даты как часть этого массива, я пробовал:
if('06/04/2012' in bank_holidays) { alert('LOL'); }
if(bank_holidays['06/04/2012'] !== undefined) { alert 'LOL'; }
И еще несколько других решений без радости, я также попытался заменить все пересылаемые косые черты простым "х" в случае возникновения проблем.
Любые рекомендации были бы высоко оценены, спасибо!
(edit) Здесь jsFiddle - http://jsfiddle.net/ENFWe/
Ответы
Ответ 1
Если вам не нравятся устаревшие браузеры:
if ( bank_holidays.indexOf( '06/04/2012' ) > -1 )
если вы заботитесь о старых браузерах, в MDN есть прокладка. В противном случае jQuery предоставляет эквивалентную функцию:
if ( $.inArray( '06/04/2012', bank_holidays ) > -1 )
Ответ 2
Попробуйте следующее:
// 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!
}
Ответ 3
Это должно сделать это:
for (var i = 0; i < bank_holidays.length; i++) {
if (bank_holidays[i] === '06/04/2012') {
alert('LOL');
}
}
jsFiddle