2012-06-13 15 views
32

Tengo una simple matriz con festivos:Javascript - comprobar gama de valor

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']; 

Quiero hacer una simple comprobación para ver si existen ciertas fechas como parte de esa matriz, que he intentado:

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

Y algunas otras soluciones sin alegría, también he intentado reemplazar todas las barras con una 'x' simple en caso de que haya problemas.

Cualquier recomendación sería muy apreciada, ¡gracias!

(editar) Aquí hay una jsFiddle-http://jsfiddle.net/ENFWe/

Respuesta

66

Si no se preocupan por navegadores antiguos:

if (bank_holidays.indexOf('06/04/2012') > -1) 

si hace se preocupan por navegadores antiguos, hay una cuña disponibles en MDN. De lo contrario, jQuery proporciona una función equivalente:

if ($.inArray('06/04/2012', bank_holidays) > -1) 
+2

debería ser al revés: 'arr .indexOf (value) ' –

+0

Vaya, nunca lo recuerdo; o) –

+0

No funcionará en IE derecho ? –

6

Prueba esto:

// 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

Esto debe hacerlo:

for (var i = 0; i < bank_holidays.length; i++) { 
    if (bank_holidays[i] === '06/04/2012') { 
     alert('LOL'); 
    } 
} 

jsFiddle